OSDN Git Service

v206
authorJean-Michel THOORENS <jeanmichel.thoorens@gmail.com>
Tue, 24 Jul 2018 19:58:50 +0000 (21:58 +0200)
committerJean-Michel THOORENS <jeanmichel.thoorens@gmail.com>
Tue, 24 Jul 2018 19:58:50 +0000 (21:58 +0200)
82 files changed:
ADDON/ANS_COMPLEMENT.asm
ADDON/ARITHMETIC.asm
ADDON/FixPoint.asm
ADDON/SD_TOOLS.asm
CHIPSTICK_FR2433_16MHz_115200bds.txt
CHIPSTICK_FR2433_16MHz_5Mbds.txt
CHIPSTICK_FR2433_16MHz_921600bds.txt
Device.inc [moved from Target.inc with 99% similarity]
FastForth.fr.odt
FastForth.fr.pdf
FastForth.odt
FastForth.pdf
FastForthWords.txt
MSP430-FORTH/ANS_COMP.f
MSP430-FORTH/CHNGBAUD.f [new file with mode: 0644]
MSP430-FORTH/CORETEST.4TH
MSP430-FORTH/DOUBLE.f
MSP430-FORTH/FixPoint.f
MSP430-FORTH/LAST.4th [deleted file]
MSP430-FORTH/PROG100k.f
MSP430-FORTH/RC5toLCD.f
MSP430-FORTH/RTC.f
MSP430-FORTH/SD_TOOLS.f
MSP430-FORTH/TESTASM.F
MSP430-FORTH/UTILITY.f
MSP430FR2355.inc
MSP430FR2433.inc
MSP430FR4133.inc
MSP430FR5738.inc
MSP430FR5739.inc
MSP430FR5948.inc
MSP430FR5969.inc
MSP430FR5994.inc
MSP430FR6989.inc
MSP_EXP430FR2355_24MHz_115200bds.txt
MSP_EXP430FR2355_24MHz_6Mbds.txt
MSP_EXP430FR2355_24MHz_921600bds.txt
MSP_EXP430FR2433_16MHz_115200bds.txt
MSP_EXP430FR2433_16MHz_5Mbds.txt
MSP_EXP430FR2433_16MHz_921600bds.txt
MSP_EXP430FR5739_24MHz_115200bds.txt
MSP_EXP430FR5739_24MHz_6Mbds.txt
MSP_EXP430FR5739_24MHz_921600bds.txt
MSP_EXP430FR5969_16MHz_115200bds.txt
MSP_EXP430FR5969_16MHz_5Mbds.txt
MSP_EXP430FR5969_16MHz_921600bds.txt
MSP_EXP430FR5994.txt [new file with mode: 0644]
MSP_EXP430FR5994_16MHz_115200bds_SD_CARD.txt
MSP_EXP430FR5994_16MHz_5Mbds_SD_CARD.txt
MSP_EXP430FR5994_16MHz_921600bds_SD_CARD.txt
MSP_EXP430FR6989_16MHz_115200bds.txt
MSP_EXP430FR6989_16MHz_5Mbds.txt
MSP_EXP430FR6989_16MHz_921600bds.txt
README.md
TERMINALBAUDRATE.inc [moved from TERMINALBAUDRATE.asm with 78% similarity]
config/gema/CHIPSTICK_FR2433.pat
config/gema/FastForthREGtoTI.pat
config/gema/MSP430FR2355.pat
config/gema/MSP430FR2433.pat
config/gema/MSP430FR2633.pat
config/gema/MSP430FR4133.pat
config/gema/MSP430FR5738.pat
config/gema/MSP430FR5739.pat
config/gema/MSP430FR5948.pat
config/gema/MSP430FR5969.pat
config/gema/MSP430FR5994.pat
config/gema/MSP430FR6989.pat
config/gema/MSP_EXP430FR2355.pat
config/gema/MSP_EXP430FR2433.pat
config/gema/MSP_EXP430FR4133.pat
config/gema/MSP_EXP430FR5739.pat
config/gema/MSP_EXP430FR5969.pat
config/gema/MSP_EXP430FR5994.pat
config/gema/MSP_EXP430FR6989.pat
config/gema/tiREGtoFastForth.pat
forthMSP430FR.asm
forthMSP430FR_ASM.asm
forthMSP430FR_CONDCOMP.asm
forthMSP430FR_HALFDUPLEX.asm
forthMSP430FR_SD_INIT.asm
forthMSP430FR_SD_LOAD.asm
mspregister.mac

index a8bcb6e..ea9c99b 100644 (file)
@@ -189,13 +189,6 @@ DOTPAREN    mDOCOL
             MOV     &SOURCE_ADR,0(PSP)
             mNEXT
 
-;https://forth-standard.org/standard/core/toBODY
-; >BODY     -- PFA      leave PFA of created word
-            FORTHWORD ">BODY"
-            ADD     #4,TOS
-            mNEXT
-
-
 ;https://forth-standard.org/standard/core/toIN
 ;C >IN     -- a-addr       holds offset in input stream
             FORTHWORD ">IN"
index 061ae82..5730b2f 100644 (file)
@@ -64,11 +64,13 @@ u1n2MSTAR   CMP     #0,TOS          ; n2 <= -1 ?
             JGE     u1u2MSTAR       ; no
             XOR     #-1,TOS         ; y: n2 --> u2 
             ADD     #1,TOS          ;
-u1u2MSTAR   .word   151Dh           ;           PUSHM IP,S (1+1 push,IP=0Dh)
+u1u2MSTAR   ;.word   151Dh           ;           PUSHM IP,S (1+1 push,IP=0Dh)
+            PUSHM   #2,IP
             ASMtoFORTH
             .word UMSTAR            ; UMSTAR use S,T,W,X,Y
             FORTHtoASM
-            .word   171Ch           ;           POPM S,IP (1+1 pop,S=0Ch)
+;            .word   171Ch           ;           POPM S,IP (1+1 pop,S=0Ch)
+            POPM  #2,IP
             CMP     #0,S            ; result > -1 ?
             JGE     MSTARend        ; yes
             XOR     #-1,0(PSP)      ; no : ud --> d
@@ -96,10 +98,12 @@ d1u2SMSLASHREM                  ;   -- d1 u2
             ADD #1,2(PSP)       ;4           d1lo+1
             ADDC #0,0(PSP)      ;4           d1hi+C
 ud1u2SMSLASHREM                 ;   -- ud1 u2
-           .word 151Ch          ;4          PUSHM S,T (1+1 push,S=0Ch)
+;           .word 151Ch          ;4          PUSHM S,T (1+1 push,S=0Ch)
+            PUSHM  #2,S
             CALL #MUSMOD
             MOV @PSP+,TOS
-           .word 171Bh          ;4          POPM T,S (1+1 pop,T=0Bh)
+;           .word 171Bh          ;4          POPM T,S (1+1 pop,T=0Bh)
+            POPM  #2,S
             CMP #0,T            ;1  -- ur uq  T=rem_sign>=0?
             JGE SMSLASHREMnruq  ;2           yes
             XOR #-1,0(PSP)      ;3
index 4886b7a..8184c50 100644 (file)
@@ -61,7 +61,7 @@ FDIV2
 ;            MOV 4(PSP),T   ; DVDlo
 ;            MOV 2(PSP),Y   ; DVDhi
 ;            MOV #0,X       ; REMlo = 0
-Q6432       .word 1537h     ; PUSHM R7,R4
+Q6432       PUSHM  #4,R7    ; PUSHM R7,R4
             MOV #0,W        ; REMhi = 0
             MOV @PSP,R6     ; DIVlo
             MOV #32,R5      ; init loop count
@@ -91,7 +91,7 @@ Q6432END
     
             MOV R7,0(PSP)   ; QUOTlo
             MOV R4,TOS      ; QUOThi
-            .word 1734h     ; POPM R4,R7
+            POPM  #4,R7     ; POPM R4 R5 R6 R7
 ;            MOV @IP+,PC    ; 33 words
 
 FDIVSGN AND #-1,S       ; clear V, set N
@@ -162,7 +162,7 @@ FNUMS       MOV @PSP,X              ; -- Qlo Qhi    X = Qlo
             CMP #10,&BASE
             JNZ FNUMS2
             ADD #1,TOS              ;                   TOS = limit for base 10
-FNUMS2      .word 151Eh             ;                   PUSHM TOS,IP  TOS=limit IP count
+FNUMS2      PUSHM  #2,TOS           ;                   PUSHM TOS,IP  TOS=limit IP count
             MOV #FNUMSNEXT,IP       ; -- Qhi Qlo limit
             MOV #0,S
 FNUMSLOOP   PUSH S                  ;                   R-- limit IP count
@@ -179,7 +179,7 @@ FNUMS2CHAR  ADD #30h,TOS
             ADD #1,S                ;                       count+1
             CMP 2(RSP),S            ;3                      count=limit ?
             JLO FNUMSLOOP           ;                       no
-            .word 171Dh             ; -- Qhi Qlorem limit   POPM IP,TOS ;
+            POPM  #2,TOS            ; -- Qhi Qlorem limit   POPM IP,TOS
             MOV #0,0(PSP)           ; -- Qhi 0 limit
             MOV #HOLDS_ORG,X        ; -- Qhi 0 len          X= org
             JMP HOLDS1
@@ -188,7 +188,7 @@ FNUMS2CHAR  ADD #30h,TOS
 ; don't use S reg (keep sign)
         FORTHWORD "UDM*"
 UDMT    PUSH IP         ; 3
-        .word 1537h     ; 6 PUSHM R7,R4     save R7 ~ R4 regs
+        PUSHM  #4,R7     ; 6 PUSHM R7,R4     save R7 ~ R4 regs
         MOV 4(PSP),IP   ; 3 MDlo
         MOV 2(PSP),T    ; 3 MDhi
         MOV @PSP,W      ; 2 MRlo
@@ -219,7 +219,7 @@ UDMT4   ADD IP,IP       ; 1 (RLA LSBs) MDlo *2
         JLO UDMT1       ; 2 IF BIT IN CARRY: FINISHED    32 * 16~ (average loop)
         MOV R6,0(PSP)   ; 3
         MOV R7,TOS      ; 1 high result in TOS
-        .word 1734h     ; 6  POPM R4,R7  restore R4 ~ R7 regs
+        POPM  #4,R7     ; 6  POPM R4 R5 R6 R7
         MOV @RSP+,IP    ; 2
         MOV @IP+,PC
 
index 62783f2..a0d26c1 100644 (file)
@@ -147,7 +147,7 @@ Clust_ClustProcess
 ; ----------------------------------;
             FORTHWORD "DIR"         ; Display DIR sector of CurrentHdl or CurrentDir sector by default 
 ; ----------------------------------;
-    SUB     #4,PSP                  ;
+    SUB     #4,PSP                  ;           Make room for result
     MOV     TOS,2(PSP)              ;           save TOS
     MOV     &DIRClusterL,&ClusterL  ;
     MOV     &DIRClusterH,&ClusterH  ;
index 59b6796..299768b 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 C8 80 3E 80 04 05 00 18 00 AC DF 54 D6
-2C C8 3E C8 00 00 00 00
+10 00 08 00 A1 F7 80 3E 05 00 18 00 6E DF 3E D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,398 +55,394 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 40 C9 08 C9 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 40 C9 08 C9 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 3E C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 A4 C8 3B 40 6E C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 52 C8 4D 15 A2 B3 1C 05
-FD 27 B2 40 11 00 0E 05 E2 C2 22 02 30 41 B2 40
-13 00 0E 05 E2 D2 22 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C8 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 0C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05
-FD 27 82 48 0E 05 30 4D 9A C8 2D 83 92 B3 1C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 C7 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C7 04 45 4D 49
-54 00 30 40 C4 C8 CC C8 04 45 43 48 4F 00 B2 40
-82 48 92 C8 82 43 E4 21 30 4D 5C C7 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C8 92 43 E4 21 30 4D
-0E C7 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C9 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C9 EF 3F 2C C9 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C7 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C9 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C9 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C8 04 28 43 52 29 00
-0D 12 87 12 88 C9 02 0D 0A 00 40 C9 22 C4 92 C7
-02 43 52 00 30 40 70 C9 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C9 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E C9 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 C9
-82 53 22 00 0D 12 87 12 2C C4 88 C9 30 CC B8 C9
-2C C4 22 00 0C CA A6 C9 DA C9 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC C8 82 2E 22 00 0D 12 87 12 C4 C9 2C C4 40 C9
-30 CC 22 C4 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C4 34 40 0C C4 30 4D 8C C5 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 CB 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 CB 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C8 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E CC 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C C4 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C9 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 CC 20 C6 0C CA
-A2 CC 3D 40 AA CC E1 22 44 3E AC CC 0A 4E 3E 4F
-3D 40 C2 CC 37 27 3D 40 9C CC 1A E2 BE 21 B8 27
-B2 23 C4 CC 3E 4F 3D 40 9C CC BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CF CC 3F
-1E CC 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 CC FE CC B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 C5
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 C9 05 0D 0A 6F
-6B 20 40 C9 D6 C7 08 C9 96 CC D6 C4 68 C5 88 C9
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CD
-2C C4 30 FF 74 C7 A4 C5 88 C9 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CD 38 C6 EA C4 B0 C5 2A CD
-88 C9 05 0D 0A 20 20 20 AC C5 32 CD F0 C7 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 D4 16 D5
-B2 40 60 C8 54 C8 B2 40 C4 C8 D4 C8 B2 40 70 C9
-86 C9 B2 40 AE C7 D4 C7 82 43 DA DC 82 43 E6 DC
-82 43 F2 DC 82 43 22 DD 82 43 2E DD 82 43 3A DD
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C8 B0 12 96 CD A2 B3
-1C 05 FD 27 B2 40 11 00 0E 05 E2 C2 22 02 92 C3
-1C 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 1C 05 F3 23 0D 12 87 12 88 C9 04 1B
-5B 37 6D 00 40 C9 2C C4 E4 21 EA C4 4C C4 B0 C5
-32 CE 88 C9 05 6C 69 6E 65 3A 40 C9 38 C5 26 C7
-DE C8 40 C9 88 C9 04 1B 5B 30 6D 00 40 C9 2E D4
-A6 C9 84 CD 7E CD 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C9 2C C4 C8 CD 30 CC 22 C4 64 CA 01 27
-0D 12 87 12 20 C6 0C CA 6A CA B0 C5 70 CE 22 C4
-CC CC 3E C6 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 CE 01 5D B2 43 BE 21
-30 4D 80 CE 83 5B 27 5D 0D 12 87 12 60 CE 2C C4
-2C C4 30 CC 30 CC 22 C4 BE 4F 02 00 3E 4F 30 4D
-6A C9 82 49 53 00 0D 12 87 12 38 C6 EA C4 B0 C5
-CC CE 98 CE 2C C4 A8 CE 30 CC 22 C4 60 CE A8 CE
-22 C4 B2 CE 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 C9 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 CD 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C6 0C CA 6A CA 4C C4 B0 C5 70 CE
-68 C5 B0 C5 32 CF 2C C4 2C C4 30 CC 30 CC 2C C4
-30 CC 30 CC 22 C4 82 9F BC 21 2C 25 0D 12 87 12
-88 C9 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CD 94 CE 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C C4 22 C4 30 CC 36 CF 82 CE 22 C4 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 CF 01 3A 30 12 6E CF 0D 12 87 12
-E6 C9 20 C6 0C CA 98 CF 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 CA 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CF BA 40 86 12 FC FF DF 3C 72 CC
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CF BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CF 06 43
-52 45 41 54 45 00 B0 12 8C CF BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CC 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 D0 05 44 45 46 45 52 B0 12 8C CF BA 40 30 40
-FC FF BA 40 2E D0 FE FF A9 3C FE CF 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CF 86 5B
-54 48 45 4E 5D 00 30 4D 7E D0 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C4 01 00 20 C6 0C CA 78 CC
-3C C4 B0 C5 FE D0 82 C4 82 C4 88 C9 04 5B 49 46
-5D 00 54 D0 BA C5 C0 D0 62 C9 2E C5 AC C5 F6 D0
-82 C4 82 C4 88 C9 06 5B 45 4C 53 45 5D 00 54 D0
-BA C5 E4 D0 62 C9 38 C5 3C C4 B0 C5 F6 D0 2E C5
-AC C5 F6 D0 88 C9 06 5B 54 48 45 4E 5D 00 54 D0
-BA C5 F6 D0 38 C5 4C C4 BA C5 9A D0 22 C4 62 C9
-88 C9 05 0D 0A 6B 6F 20 40 C9 D6 C7 86 CC AC C5
-9A D0 8A D0 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 D1 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 0C CA 6A CA 64 C4 5C C5 22 C4
-24 D1 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C6 0C CA 6A CA 64 C4 22 C4 5C D1 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CC 06 4D 41 52
-4B 45 52 00 B0 12 8C CF BA 40 84 12 FC FF BA 40
-5A D1 FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 CE 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 C5 00 00
-2E 53 30 4D 32 D0 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C9 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C D0 85 42 45 47 49 4E 30 40
-74 C7 E6 D1 85 55 4E 54 49 4C 39 40 B0 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CE 85 41 47 41 49 4E 39 40 AC C5 EF 3F
-C8 CF 85 57 48 49 4C 45 0D 12 87 12 AC D1 70 C4
-22 C4 EC CE 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D2 EC D1 22 C4 C6 D1 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 C5 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C D1
-84 4C 4F 4F 50 00 39 40 E2 C5 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C7 85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F
-80 D2 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 C5
-00 00 BA 40 AC C5 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 D2
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D2 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 D0 2C C4 10 00 2C C4
-00 00 C0 C5 2C C4 00 00 30 CC E2 C5 44 D3 74 C7
-2C C4 CE 21 3C C4 EA C4 30 CC F2 C4 1E D0 2C C4
-D0 21 F2 C4 22 C4 5E CE 05 46 4F 52 54 48 84 12
-5E D3 AE DD 72 D6 24 DF 68 D3 58 D6 B4 D2 EC DE
-18 DE 36 DE 6C D4 FA DE 40 DE 00 00 A2 DD 8A CE
-2C DE 00 00 24 D2 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 CF 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 C9 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 D2 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E D3 CC D3 E0 D3 F0 D3
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D3 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D3 54 D6 AC DF 44 D2 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D4 92 42 0C 18 34 D4 EF 3F
-24 D4 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 D4 92 42 CC 21 34 D4 30 4D 38 D4 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 D3 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 DA FF FA 23 B0 12 8A CD
-B2 40 AC DF 0C 18 B2 40 54 D6 0E 18 CA 3F A8 D1
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C9 06 0D 1B 5B 37 6D 23 00 40 C9 5E C7 88 C9
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C9 2C C4 30 FF 74 C7 20 C5 26 C7 88 C9 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CD 86 D4 04 57
-41 52 4D 00 30 40 B8 D4 F8 D1 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 02 02
-B2 D3 06 02 F2 D0 06 00 24 02 F2 D3 26 02 F2 40
-FD 00 22 02 F2 40 A5 00 A1 01 F2 40 10 00 A0 01
-D2 43 A1 01 B2 40 00 A5 60 01 B2 40 29 01 80 01
-B2 40 0B 00 82 01 B2 40 E9 01 84 01 39 40 00 01
-B2 D0 10 00 86 01 92 D2 5E 01 08 18 38 40 59 14
-18 83 FE 23 19 83 FA 23 3A 40 26 D5 39 40 DA FF
-89 4A 00 00 29 53 FC 23 92 42 02 18 E4 FF B2 40
-18 00 0A 18 39 40 00 20 89 43 00 00 29 53 39 90
-FF 2F FA 2B 31 40 E0 20 3F 40 80 20 37 40 22 C4
-36 40 B4 C4 35 40 00 C4 34 40 0C C4 B2 40 0A 00
-E2 21 B2 43 B4 21 92 C3 30 01 18 42 08 18 F2 B0
-10 00 00 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 00 05 B2 42 06 05 B2 40 A1 F7 08 05 F2 D0
-30 00 0A 02 92 C3 00 05 92 D3 1A 05 3D 40 22 D6
-38 90 0A 00 3B 27 38 90 16 00 38 2F 28 93 11 23
-06 27 14 D5 96 D3 09 41 53 53 45 4D 42 4C 45 52
-84 12 5E D3 7C DC EA DC 30 DC 54 DD F6 DB 7C DD
-FA D8 00 00 EC DB A0 DC 4E DC 8E DC 0A DA 00 00
-00 00 8C DD 92 D3 B0 D4 85 48 49 32 4C 4F 0D 12
-87 12 74 C7 C0 D1 30 CC 82 CE 9C D3 30 D6 22 C4
-1A D5 04 43 4F 44 45 00 B0 12 8C CF A2 82 CC 21
-0D 12 87 12 7E CF AC C5 6A D6 00 00 07 45 4E 44
-43 4F 44 45 0D 12 87 12 B6 D3 36 CF 22 C4 26 D6
-03 41 53 4D 92 42 E0 21 C0 21 B2 40 34 D6 E0 21
-E3 3F 8C D6 06 45 4E 44 41 53 4D 00 92 42 C0 21
-E0 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 21
-BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 21
-B2 43 BE 21 30 40 B6 D3 00 00 05 4C 4F 32 48 49
-A2 83 CC 21 1A 42 CC 21 EE 3F 38 40 C6 21 39 48
-2A 48 09 5A 1A 52 CA 21 09 9A 03 24 7E 9A FC 27
-1A 83 0E 4A 2A 88 82 4A CA 21 30 4D 87 12 0C CA
-6A CA BA C5 2E D7 24 CB B0 C5 70 CE 50 D7 30 D7
-29 4E 39 90 86 12 02 20 2E 53 30 41 39 90 85 12
-03 20 1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52
-30 41 19 42 CC 21 A2 53 CC 21 89 4E 00 00 3E 40
-29 00 12 12 CA 21 92 53 CA 21 87 12 0C CA 24 CB
-B0 C5 80 D7 76 D7 21 53 3E 90 10 00 BE 2D 30 41
-82 D7 B2 41 CA 21 22 D3 30 41 0D 12 87 12 20 C6
-FA D6 94 D7 82 43 C4 21 92 42 CC 21 C2 21 A2 53
-CC 21 0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53
-CA 21 B0 12 1C D7 0E 93 04 20 B2 40 00 03 C4 21
-27 3C 1E 93 04 20 B2 40 10 03 C4 21 21 3C 2E 93
-04 20 B2 40 20 03 C4 21 1B 3C 2E 92 04 20 B2 40
-20 02 C4 21 15 3C 3E 92 04 20 B2 40 30 02 C4 21
-0F 3C 3E 93 04 20 B2 40 30 03 C4 21 09 3C B2 40
-30 00 C4 21 19 42 CC 21 A2 53 CC 21 89 4E 00 00
-3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40
-10 02 C4 21 92 53 CA 21 B0 12 1C D7 EB 3F FA 90
-40 00 00 00 1A 20 B2 40 20 00 C4 21 92 53 CA 21
-B0 12 62 D7 0E 20 B2 50 10 00 C4 21 3E 40 2B 00
-B0 12 62 D7 33 24 92 92 C6 21 CA 21 02 24 92 53
-CA 21 8E 10 82 5E C4 21 D3 3F B0 12 62 D7 F9 23
-B2 50 10 00 C4 21 3E 40 28 00 B0 12 1C D7 B0 12
-52 D7 E8 3F 0D 12 87 12 20 C6 FA D6 8E D8 FE 90
-26 00 00 00 3E 40 20 00 04 20 B2 50 82 00 C4 21
-C1 3F B0 12 62 D7 DE 23 B2 50 80 00 C4 21 3E 40
-28 00 B0 12 1C D7 B0 12 52 D7 D4 23 3D 40 70 CE
-30 4D 4C C8 04 52 45 54 49 00 0D 12 87 12 2C C4
-00 13 30 CC 22 C4 2C C4 2C 00 8A D7 84 D8 E0 D8
-2E 4E 1E D2 C4 21 19 42 C2 21 90 3F EA D6 03 4D
-4F 56 84 12 D6 D8 00 40 EE D8 05 4D 4F 56 2E 42
-84 12 D6 D8 40 40 00 00 03 41 44 44 84 12 D6 D8
-00 50 08 D9 05 41 44 44 2E 42 84 12 D6 D8 40 50
-14 D9 04 41 44 44 43 00 84 12 D6 D8 00 60 22 D9
-06 41 44 44 43 2E 42 00 84 12 D6 D8 40 60 C4 D8
-04 53 55 42 43 00 84 12 D6 D8 00 70 40 D9 06 53
-55 42 43 2E 42 00 84 12 D6 D8 40 70 4E D9 03 53
-55 42 84 12 D6 D8 00 80 5E D9 05 53 55 42 2E 42
-84 12 D6 D8 40 80 C6 D6 03 43 4D 50 84 12 D6 D8
-00 90 78 D9 05 43 4D 50 2E 42 84 12 D6 D8 40 90
-B4 D6 04 44 41 44 44 00 84 12 D6 D8 00 A0 92 D9
-06 44 41 44 44 2E 42 00 84 12 D6 D8 40 A0 84 D9
-03 42 49 54 84 12 D6 D8 00 B0 B0 D9 05 42 49 54
-2E 42 84 12 D6 D8 40 B0 BC D9 03 42 49 43 84 12
-D6 D8 00 C0 CA D9 05 42 49 43 2E 42 84 12 D6 D8
-40 C0 D6 D9 03 42 49 53 84 12 D6 D8 00 D0 E4 D9
-05 42 49 53 2E 42 84 12 D6 D8 40 D0 00 00 03 58
-4F 52 84 12 D6 D8 00 E0 FE D9 05 58 4F 52 2E 42
-84 12 D6 D8 40 E0 30 D9 03 41 4E 44 84 12 D6 D8
-00 F0 18 DA 05 41 4E 44 2E 42 84 12 D6 D8 40 F0
-20 C6 8A D7 36 DA 1A 42 C4 21 B2 F0 70 00 C4 21
-8A 10 3A F0 0F 00 82 DA C4 21 4A 3F 6A D9 03 52
-52 43 84 12 30 DA 00 10 4E DA 05 52 52 43 2E 42
-84 12 30 DA 40 10 5A DA 04 53 57 50 42 00 84 12
-30 DA 80 10 68 DA 03 52 52 41 84 12 30 DA 00 11
-76 DA 05 52 52 41 2E 42 84 12 30 DA 40 11 82 DA
-03 53 58 54 84 12 30 DA 80 11 00 00 04 50 55 53
-48 00 84 12 30 DA 00 12 9C DA 06 50 55 53 48 2E
-42 00 84 12 30 DA 40 12 F0 D9 04 43 41 4C 4C 00
-84 12 30 DA 80 12 2C C4 2C 00 8A D7 84 D8 D0 DA
-59 42 C4 21 5A 42 C5 21 82 4A C4 21 BE 90 00 15
-00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00
-03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E C7
-88 C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73
-D4 CD AA DA 05 50 55 53 48 4D 84 12 C6 DA 00 15
-14 DB 04 50 4F 50 4D 00 84 12 C6 DA 00 17 20 C6
-FA D6 34 DB 82 43 C4 21 92 42 CC 21 C2 21 A2 53
-CC 21 92 53 CA 21 3E 40 2C 00 87 12 0C CA 24 CB
-B0 C5 70 CE 84 D8 58 DB 0A 4E 3E 4F 1A 83 2A 92
-CA 2F 8A 10 5A 06 6F 3F 90 DA 04 52 52 43 4D 00
-84 12 2E DB 50 00 6A DB 04 52 52 41 4D 00 84 12
-2E DB 50 01 78 DB 04 52 4C 41 4D 00 84 12 2E DB
-50 02 86 DB 04 52 52 55 4D 00 84 12 2E DB 50 03
-85 12 00 3C 94 DB 03 53 3E 3D 85 12 00 38 A6 DB
-02 53 3C 00 85 12 00 34 22 DB 03 30 3E 3D 85 12
-00 30 BA DB 02 30 3C 00 85 12 00 30 00 00 02 55
-3C 00 85 12 00 2C CE DB 03 55 3E 3D 85 12 00 28
-C4 DB 03 30 3C 3E 85 12 00 24 E2 DB 02 30 3D 00
-85 12 00 20 58 C8 02 49 46 00 1A 42 CC 21 8A 4E
-00 00 A2 53 CC 21 0E 4A 30 4D D8 DB 04 54 48 45
-4E 00 1A 42 CC 21 08 4E 3E 4F 09 48 29 53 0A 89
-0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D A0 D9
-04 45 4C 53 45 00 1A 42 CC 21 BA 40 00 3C 00 00
-A2 53 CC 21 2F 83 8F 4A 00 00 E3 3F 0C DC 05 55
-4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 21 2A 83
-0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA
-89 48 00 00 A2 53 CC 21 30 4D 24 DA 05 41 47 41
-49 4E 0D 12 87 12 A0 DB 54 DC 22 C4 00 00 05 57
-48 49 4C 45 0D 12 87 12 FA DB 70 C4 22 C4 B0 DB
-06 52 45 50 45 41 54 00 0D 12 87 12 A0 DB 54 DC
-12 DC 22 C4 B6 DC 3D 41 08 4E 3E 4F 2A 48 0A 93
-04 20 98 42 CC 21 00 00 30 4D 88 43 00 00 C3 3F
-BA DA 03 42 57 31 84 12 B4 DC 00 00 D2 DC 03 42
-57 32 84 12 B4 DC 00 00 DE DC 03 42 57 33 84 12
-B4 DC 00 00 F6 DC 3D 41 1A 42 CC 21 28 4E 08 93
-08 20 BA 4F 00 00 A2 53 CC 21 8E 4A 00 00 3E 4F
-30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31 84 12
-F4 DC 00 00 1A DD 03 46 57 32 84 12 F4 DC 00 00
-26 DD 03 46 57 33 84 12 F4 DC 00 00 3E 90 00 30
-07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08
-30 4D 32 DD 04 47 4F 54 4F 00 0D 12 87 12 A0 DB
-60 CE 26 CC 22 C4 00 00 05 3F 47 4F 54 4F 0D 12
-87 12 3C DD 60 CE 26 CC 22 C4 00 00 03 4A 4D 50
-0D 12 87 12 60 CE 82 DC 22 C4 68 DD 04 3F 4A 4D
-50 00 0D 12 87 12 3C DD 60 CE 70 C4 54 DC 22 C4
-42 D1 07 7B 54 4F 4F 4C 53 7D 30 4D A0 D6 03 41
-4E 44 3E FF 30 4D C6 D3 02 2E 53 00 8F 4E FE FF
-0E 4F 2E 83 8F 4E FA FF 3E 40 80 20 2E 83 8F 4E
-FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12 2C C4
-3C 00 D2 C8 5E C7 2C C4 08 00 D2 C8 2C C4 3E 00
-D2 C8 08 C9 82 C4 82 C4 8E C5 BA C5 04 DE 5A C4
-5A C4 22 C4 C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00
-D0 C5 06 DE 22 C4 B8 DD 03 2E 52 53 8F 4E FE FF
-8F 41 FA FF 3E 40 E0 20 D2 3F CA CA 01 3F 2E 4E
-30 40 26 C7 52 D4 03 50 41 44 85 12 E4 20 0E D5
-05 57 4F 52 44 53 0D 12 87 12 84 C9 2C C4 03 00
-1E C9 2C C4 D0 21 EA C4 3A DE 2C C4 10 00 3C C4
-18 C5 F6 D2 2C C4 00 00 3C C4 2C C4 10 00 3C C4
-18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 3A DE 18 C5
-EA C4 A4 C5 B0 C5 96 DE 5A C4 5A C4 F8 C5 3C C4
-3A DE 18 C5 EA C4 2C C4 02 00 D0 C5 78 DE 4C C4
-B0 C5 D8 DE 3C C4 2C C4 02 00 20 C5 EA C4 92 C4
-3A DE 18 C5 F2 C4 3C C4 78 CC 2C C4 7F 00 B2 DD
-40 C9 00 C5 2C C4 0F 00 B2 DD 2C C4 10 00 70 C4
-20 C5 1E C9 AC C5 64 DE 5A C4 22 C4 F0 D2 03 4D
-41 58 2E 9F 07 38 2F 53 30 4D DE DE 03 4D 49 4E
-2E 9F F9 3B 3E 4F 30 4D 04 D2 03 55 2E 52 0D 12
-87 12 A8 C4 42 C6 2C C4 00 00 A2 C6 D4 C6 F0 C6
-B4 C4 82 C4 20 C5 2C C4 00 00 E2 DE 1E C9 40 C9
-22 C4 D4 D3 04 44 55 4D 50 00 0D 12 12 12 E2 21
-B2 40 10 00 E2 21 2E 5F 87 12 70 C4 82 C4 82 C4
-26 C7 2C C4 01 00 20 C5 26 C7 2C C4 FE FF B2 DD
-C0 C5 84 C9 F8 C5 2C C4 07 00 FE DE 08 C9 F8 C5
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+E2 C2 22 02 30 41 B2 40 13 00 0E 05 E2 D2 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 E2 C2
+22 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 70 DD
+E6 D6 E6 DE 64 D3 42 D6 B0 D2 AE DE DA DD F8 DD
+68 D4 BC DE 02 DE 00 00 64 DD 5E CE EE DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 3E D6
+6E DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 6E DF 0C 18 B2 40
+3E D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 02 02 B2 D3
+06 02 F2 D0 06 00 24 02 F2 D3 26 02 F2 40 FD 00
+22 02 F2 40 A5 00 A1 01 F2 40 10 00 A0 01 D2 43
+A1 01 B2 40 00 A5 60 01 B2 40 29 01 80 01 B2 40
+0B 00 82 01 B2 40 E9 01 84 01 39 40 00 01 B2 D0
+10 00 86 01 92 D2 5E 01 08 18 38 40 59 14 18 83
+FE 23 19 83 FA 23 39 40 26 00 29 83 B9 40 14 D5
+DA FF FB 23 B2 40 54 C8 E4 FF B2 40 18 00 0A 18
+39 40 00 10 29 83 89 43 00 20 FC 23 31 40 E0 20
+3F 40 80 20 37 40 22 C4 36 40 B4 C4 35 40 00 C4
+34 40 0C C4 B2 40 0A 00 DC 21 B2 43 B4 21 92 C3
+30 01 18 42 08 18 F2 B0 10 00 00 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 00 05 92 42 02 18
+06 05 92 42 04 18 08 05 F2 D0 30 00 0A 02 92 C3
+00 05 92 D3 1A 05 3D 40 0C D6 38 90 0A 00 44 27
+38 90 16 00 41 2F 28 93 1A 23 0F 27 AE D4 92 D3
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A D3 3E DC
+AC DC F2 DB 16 DD B8 DB 3E DD D2 D8 00 00 AE DB
+62 DC 10 DC 50 DC E2 D9 00 00 00 00 4E DD 8E D3
+A4 D1 85 48 49 32 4C 4F 0D 12 87 12 74 C7 BC D1
+0C CC 56 CE 98 D3 1A D6 22 C4 08 D5 04 43 4F 44
+45 00 B0 12 82 CF A2 82 C6 21 0D 12 87 12 74 CF
+AC C5 54 D6 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 D3 0A CF 22 C4 10 D6 03 41 53 4D 92 42
+DA 21 E0 21 B2 40 1E D6 DA 21 E3 3F 76 D6 06 45
+4E 44 41 53 4D 00 92 42 E0 21 DA 21 E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 21 BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 21 B2 43 BE 21 30 40
+B2 D3 00 00 05 4C 4F 32 48 49 A2 83 C6 21 1A 42
+C6 21 EE 3F 5C D6 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C CF 56 CE F8 D6 3D 41 2A 82 82 4A C6 21
+B4 3F 38 40 C0 21 39 48 2A 48 09 5A 1A 52 C4 21
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 21 30 4D 1C 15 87 12 E8 C9 46 CA BA C5 38 D7
+00 CB B0 C5 44 CE 5A D7 3A D7 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 24 D7 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 21 92 53 C4 21
+87 12 E8 C9 00 CB B0 C5 96 D7 8C D7 21 53 3E 90
+10 00 84 2D E2 2B 98 D7 B2 41 C4 21 DE 3F 0D 12
+87 12 20 C6 02 D7 A8 D7 0C 43 1B 42 C6 21 A2 53
+C6 21 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 21 B0 12 24 D7 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 21 B0 12 24 D7 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 21 B0 12
+76 D7 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 76 D7
+92 92 C0 21 C4 21 02 24 92 53 C4 21 8E 10 0C 5E
+D8 3F B0 12 76 D7 FA 23 3C 50 10 00 B0 12 5E D7
+EF 3F 0D 12 87 12 20 C6 02 D7 7C D8 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+76 D7 E5 23 3C 50 80 00 B0 12 5E D7 E0 3F 44 C8
+04 52 45 54 49 00 0D 12 87 12 2C C4 00 13 0C CC
+22 C4 2C C4 2C 00 9E D7 72 D8 BC D8 2E 4E 0E DC
+09 4B A5 3F D4 D6 03 4D 4F 56 84 12 B2 D8 00 40
+C6 D8 05 4D 4F 56 2E 42 84 12 B2 D8 40 40 00 00
+03 41 44 44 84 12 B2 D8 00 50 E0 D8 05 41 44 44
+2E 42 84 12 B2 D8 40 50 EC D8 04 41 44 44 43 00
+84 12 B2 D8 00 60 FA D8 06 41 44 44 43 2E 42 00
+84 12 B2 D8 40 60 A0 D8 04 53 55 42 43 00 84 12
+B2 D8 00 70 18 D9 06 53 55 42 43 2E 42 00 84 12
+B2 D8 40 70 26 D9 03 53 55 42 84 12 B2 D8 00 80
+36 D9 05 53 55 42 2E 42 84 12 B2 D8 40 80 B0 D6
+03 43 4D 50 84 12 B2 D8 00 90 50 D9 05 43 4D 50
+2E 42 84 12 B2 D8 40 90 9E D6 04 44 41 44 44 00
+84 12 B2 D8 00 A0 6A D9 06 44 41 44 44 2E 42 00
+84 12 B2 D8 40 A0 5C D9 03 42 49 54 84 12 B2 D8
+00 B0 88 D9 05 42 49 54 2E 42 84 12 B2 D8 40 B0
+94 D9 03 42 49 43 84 12 B2 D8 00 C0 A2 D9 05 42
+49 43 2E 42 84 12 B2 D8 40 C0 AE D9 03 42 49 53
+84 12 B2 D8 00 D0 BC D9 05 42 49 53 2E 42 84 12
+B2 D8 40 D0 00 00 03 58 4F 52 84 12 B2 D8 00 E0
+D6 D9 05 58 4F 52 2E 42 84 12 B2 D8 40 E0 08 D9
+03 41 4E 44 84 12 B2 D8 00 F0 F0 D9 05 41 4E 44
+2E 42 84 12 B2 D8 40 F0 20 C6 9E D7 0E DA 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 42 D9
+03 52 52 43 84 12 08 DA 00 10 20 DA 05 52 52 43
+2E 42 84 12 08 DA 40 10 2C DA 04 53 57 50 42 00
+84 12 08 DA 80 10 3A DA 03 52 52 41 84 12 08 DA
+00 11 48 DA 05 52 52 41 2E 42 84 12 08 DA 40 11
+54 DA 03 53 58 54 84 12 08 DA 80 11 00 00 04 50
+55 53 48 00 84 12 08 DA 00 12 6E DA 06 50 55 53
+48 2E 42 00 84 12 08 DA 40 12 C8 D9 04 43 41 4C
+4C 00 84 12 08 DA 80 12 1A 53 0E 4A 0D 12 87 12
+5E C7 64 C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 CD 20 C6 02 D7 BA DA 0C 43 1B 42 C6 21
+A2 53 C6 21 92 53 C4 21 3E 40 2C 00 1C 15 87 12
+E8 C9 00 CB B0 C5 44 CE DA DA 1B 17 87 12 72 D8
+E2 DA 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 62 DA
+04 52 52 43 4D 00 84 12 B4 DA 50 00 10 DB 04 52
+52 41 4D 00 84 12 B4 DA 50 01 1E DB 04 52 4C 41
+4D 00 84 12 B4 DA 50 02 2C DB 04 52 52 55 4D 00
+84 12 B4 DA 50 03 7C DA 05 50 55 53 48 4D 84 12
+B4 DA 00 15 48 DB 04 50 4F 50 4D 00 84 12 B4 DA
+00 17 85 12 00 3C 3A DB 03 53 3E 3D 85 12 00 38
+68 DB 02 53 3C 00 85 12 00 34 56 DB 03 30 3E 3D
+85 12 00 30 7C DB 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C 90 DB 03 55 3E 3D 85 12
+00 28 86 DB 03 30 3C 3E 85 12 00 24 A4 DB 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 21
+8A 4E 00 00 A2 53 C6 21 0E 4A 30 4D 9A DB 04 54
+48 45 4E 00 1A 42 C6 21 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+78 D9 04 45 4C 53 45 00 1A 42 C6 21 BA 40 00 3C
+00 00 A2 53 C6 21 2F 83 8F 4A 00 00 E3 3F CE DB
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 21
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 21 30 4D FC D9 05 41
+47 41 49 4E 0D 12 87 12 62 DB 16 DC 22 C4 00 00
+05 57 48 49 4C 45 0D 12 87 12 BC DB 70 C4 22 C4
+72 DB 06 52 45 50 45 41 54 00 0D 12 87 12 62 DB
+16 DC D4 DB 22 C4 78 DC 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 21 00 00
+30 4D 8C DA 03 42 57 31 84 12 76 DC E2 21 94 DC
+03 42 57 32 84 12 76 DC E4 21 A0 DC 03 42 57 33
+84 12 76 DC E6 21 B8 DC 3D 41 1A 42 C6 21 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 21 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 B6 DC E8 21 DC DC 03 46 57 32 84 12 B6 DC
+EA 21 E8 DC 03 46 57 33 84 12 B6 DC EC 21 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D F4 DC 04 47 4F 54 4F 00 0D 12 87 12
+62 DB 34 CE 02 CC 22 C4 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 FE DC 34 CE 02 CC 22 C4 00 00 03 4A
+4D 50 0D 12 87 12 34 CE 44 DC 22 C4 2A DD 04 3F
+4A 4D 50 00 0D 12 87 12 FE DC 34 CE 70 C4 16 DC
+22 C4 40 D1 07 7B 54 4F 4F 4C 53 7D 30 4D 8A D6
+03 41 4E 44 3E FF 30 4D C2 D3 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 20 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C C4 3C 00 B0 C8 5E C7 2C C4 08 00 B0 C8 2C C4
+3E 00 B0 C8 EC C8 82 C4 82 C4 8E C5 BA C5 C6 DD
+5A C4 5A C4 22 C4 C0 C5 F8 C5 EA C4 26 C7 2C C4
+02 00 D0 C5 C8 DD 22 C4 7A DD 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 20 D2 3F 42 D0 01 3F
+2E 4E 30 40 26 C7 4E D4 03 50 41 44 85 12 E4 20
+A8 D4 05 57 4F 52 44 53 0D 12 87 12 52 C9 2C C4
+03 00 02 C9 2C C4 CA 21 EA C4 FC DD 2C C4 10 00
+3C C4 18 C5 F2 D2 2C C4 00 00 3C C4 2C C4 10 00
+3C C4 18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 FC DD
+18 C5 EA C4 A4 C5 B0 C5 58 DE 5A C4 5A C4 F8 C5
+3C C4 FC DD 18 C5 EA C4 2C C4 02 00 D0 C5 3A DE
+4C C4 B0 C5 9A DE 3C C4 2C C4 02 00 20 C5 EA C4
+92 C4 FC DD 18 C5 F2 C4 3C C4 54 CC 2C C4 7F 00
+74 DD 24 C9 00 C5 2C C4 0F 00 74 DD 2C C4 10 00
+70 C4 20 C5 02 C9 AC C5 26 DE 5A C4 22 C4 EC D2
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D A0 DE 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D2 03 55 2E 52
+0D 12 87 12 A8 C4 42 C6 2C C4 00 00 A2 C6 D4 C6
+F0 C6 B4 C4 82 C4 20 C5 2C C4 00 00 A4 DE 02 C9
+24 C9 22 C4 D0 D3 04 44 55 4D 50 00 0D 12 12 12
+DC 21 B2 40 10 00 DC 21 2E 5F 87 12 70 C4 82 C4
+82 C4 26 C7 2C C4 01 00 20 C5 26 C7 2C C4 FE FF
+74 DD C0 C5 52 C9 F8 C5 2C C4 07 00 C0 DE EC C8
+F8 C5 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5
+2C C4 03 00 C0 DE E2 C5 2C DF EC C8 EC C8 F8 C5
 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4
-03 00 FE DE E2 C5 6A DF 08 C9 08 C9 F8 C5 2C C4
-10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00
-F0 DE 20 C6 E2 DE D2 C8 E2 C5 88 DF 2C C4 10 00
-D0 C5 52 DF B4 C4 2C C6 F2 C4 22 C4
+7E 00 B2 DE 20 C6 A4 DE B0 C8 E2 C5 4A DF 2C C4
+10 00 D0 C5 14 DF B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-26 D5
+14 D5
 q
index 8d138b9..bf24ed1 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 60 C8 80 3E 50 C3 05 00 18 00 A2 DF 4A D6
-2C C8 38 C8 00 00 00 00
+10 00 03 00 00 21 80 3E 05 00 18 00 6E DF 3E D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,398 +55,394 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 34 C9 FC C8 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 34 C9 FC C8 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 38 C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 98 C8 3B 40 68 C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 4C C8 4D 15 B2 40 11 00
-0E 05 E2 C2 22 02 30 41 B2 40 13 00 0E 05 E2 D2
-22 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A C8
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 0C 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 0E 05 30 4D 8E C8 2D 83
-92 B3 1C 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 21 02 24 92 53 E4 21 3E 8F 3D 41 30 4D A8 C7
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C C7
-04 45 4D 49 54 00 30 40 B8 C8 C0 C8 04 45 43 48
-4F 00 B2 40 82 48 86 C8 82 43 E4 21 30 4D 5C C7
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 C8 92 43
-E4 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 C8 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E C9 EF 3F 20 C9
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+E2 C2 22 02 30 41 B2 40 13 00 0E 05 E2 D2 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A C9 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C C9 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 C8 04 28
-43 52 29 00 0D 12 87 12 7C C9 02 0D 0A 00 34 C9
-22 C4 92 C7 02 43 52 00 30 40 64 C9 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 C9 07 43 41 50 53 5F 4F 4E B2 43 B4 21 30 4D
-92 C9 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 21
-30 4D 0A C9 82 53 22 00 0D 12 87 12 2C C4 7C C9
-24 CC AC C9 2C C4 22 00 00 CA 9A C9 CE C9 3D 41
-6E 4E 1E 83 82 5E CC 21 3E 4F 92 B3 CC 21 A2 63
-CC 21 30 4D E0 C8 82 2E 22 00 0D 12 87 12 B8 C9
-2C C4 34 C9 24 CC 22 C4 00 00 04 57 4F 52 44 00
-3C 40 C6 21 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 21 F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 21 82 4A CA 21 1E 42 CC 21 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 21 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 C4 34 40 0C C4 30 4D 8C C5 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 21 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 21 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 CB 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A CB 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 C6
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 21 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC C8 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E C5 01 2C 1A 42 CC 21 A2 53 CC 21 8A 4E 00 00
-3E 4F 30 4D 22 CC 87 4C 49 54 45 52 41 4C 82 93
-BE 21 0F 24 1A 42 CC 21 A2 52 CC 21 BA 40 2C C4
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 C9 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 21 82 4E
-C6 21 B2 4F C8 21 3E 4F 30 4D 0D 12 87 12 7A CC
-20 C6 00 CA 96 CC 3D 40 9E CC E1 22 44 3E A0 CC
-0A 4E 3E 4F 3D 40 B6 CC 37 27 3D 40 90 CC 1A E2
-BE 21 B8 27 B2 23 B8 CC 3E 4F 3D 40 90 CC BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 CF CC 3F 12 CC 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 21 3C 49 3B 49 3A 49 3D 15 87 12 8A CC
-F2 CC B2 41 CA 21 B2 41 C8 21 B2 41 C6 21 3D 41
-30 4D 94 C5 04 51 55 49 54 00 31 40 E0 20 B2 40
-00 20 00 20 82 43 BE 21 82 43 08 18 87 12 7C C9
-05 0D 0A 6F 6B 20 34 C9 D6 C7 FC C8 8A CC D6 C4
-68 C5 7C C9 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC CD 2C C4 30 FF 74 C7 A4 C5 7C C9 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC CD 38 C6 EA C4
-B0 C5 1E CD 7C C9 05 0D 0A 20 20 20 AC C5 26 CD
-F0 C7 05 41 42 4F 52 54 3F 40 80 20 C6 3F B2 40
-AC D4 0A D5 B2 40 5A C8 4E C8 B2 40 B8 C8 C8 C8
-B2 40 64 C9 7A C9 B2 40 AE C7 D4 C7 82 43 D0 DC
-82 43 DC DC 82 43 E8 DC 82 43 18 DD 82 43 24 DD
-82 43 30 DD B2 40 0A 00 E2 21 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 C8 B0 12
-8A CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 E2 C2
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 E2 C2
 22 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
-7C C9 04 1B 5B 37 6D 00 34 C9 2C C4 E4 21 EA C4
-4C C4 B0 C5 26 CE 7C C9 05 6C 69 6E 65 3A 34 C9
-38 C5 26 C7 D2 C8 34 C9 7C C9 04 1B 5B 30 6D 00
-34 C9 22 D4 9A C9 78 CD 72 CD 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 C9 2C C4 BC CD 24 CC 22 C4
-58 CA 01 27 0D 12 87 12 20 C6 00 CA 5E CA B0 C5
-64 CE 22 C4 C0 CC 3E C6 81 5C 92 42 C6 21 CA 21
-30 4D 00 00 81 5B 82 43 BE 21 30 4D 68 CE 01 5D
-B2 43 BE 21 30 4D 74 CE 83 5B 27 5D 0D 12 87 12
-54 CE 2C C4 2C C4 24 CC 24 CC 22 C4 BE 4F 02 00
-3E 4F 30 4D 5E C9 82 49 53 00 0D 12 87 12 38 C6
-EA C4 B0 C5 C0 CE 8C CE 2C C4 9C CE 24 CC 22 C4
-54 CE 9C CE 22 C4 A6 CE 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D B4 C9
-87 52 45 43 55 52 53 45 19 42 CC 21 99 42 BA 21
-00 00 A2 53 CC 21 30 4D 04 CD 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 C6 00 CA 5E CA 4C C4
-B0 C5 64 CE 68 C5 B0 C5 26 CF 2C C4 2C C4 24 CC
-24 CC 2C C4 24 CC 24 CC 22 C4 82 9F BC 21 2C 25
-0D 12 87 12 7C C9 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 CD 88 CE 81 3B 82 93 BE 21
-8C 27 0D 12 87 12 2C C4 22 C4 24 CC 2A CF 76 CE
-22 C4 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 21 82 4F BC 21 30 4D 4A CF 01 3A 30 12 62 CF
-0D 12 87 12 DA C9 20 C6 00 CA 8C CF 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 21 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 21 82 49 B8 21 82 4A
-BA 21 2A 52 82 4A CC 21 30 41 FA C9 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 CF BA 40 86 12 FC FF
-DF 3C 66 CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 CF BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 CF 06 43 52 45 41 54 45 00 B0 12 80 CF BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 CC 05 44 4F 45
-53 3E 1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C D0 05 44 45 46 45 52 B0 12 80 CF
-BA 40 30 40 FC FF BA 40 22 D0 FE FF A9 3C F2 CF
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A CF 86 5B 54 48 45 4E 5D 00 30 4D 72 D0 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6
-00 CA 6C CC 3C C4 B0 C5 F2 D0 82 C4 82 C4 7C C9
-04 5B 49 46 5D 00 48 D0 BA C5 B4 D0 56 C9 2E C5
-AC C5 EA D0 82 C4 82 C4 7C C9 06 5B 45 4C 53 45
-5D 00 48 D0 BA C5 D8 D0 56 C9 38 C5 3C C4 B0 C5
-EA D0 2E C5 AC C5 EA D0 7C C9 06 5B 54 48 45 4E
-5D 00 48 D0 BA C5 EA D0 38 C5 4C C4 BA C5 8E D0
-22 C4 56 C9 7C C9 05 0D 0A 6B 6F 20 34 C9 D6 C7
-7A CC AC C5 8E D0 7E D0 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 D1 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 C6 00 CA 5E CA 64 C4
-5C C5 22 C4 18 D1 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 00 CA 5E CA 64 C4 22 C4 50 D1
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 CC
-06 4D 41 52 4B 45 52 00 B0 12 80 CF BA 40 84 12
-FC FF BA 40 4E D1 FE FF 9A 42 CE 21 00 00 28 83
-8A 48 02 00 A2 52 CC 21 18 42 B6 21 19 42 B8 21
-A8 49 FE FF 89 48 00 00 30 4D C8 CE 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 21 A2 52 CC 21 BE 40
-B0 C5 00 00 2E 53 30 4D 26 D0 84 45 4C 53 45 00
-A2 52 CC 21 1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E C9 84 54 48 45 4E 00
-9E 42 CC 21 00 00 3E 4F 30 4D 40 D0 85 42 45 47
-49 4E 30 40 74 C7 DA D1 85 55 4E 54 49 4C 39 40
-B0 C5 A2 52 CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A CE 85 41 47 41 49 4E 39 40
-AC C5 EF 3F BC CF 85 57 48 49 4C 45 0D 12 87 12
-A0 D1 70 C4 22 C4 E0 CE 86 52 45 50 45 41 54 00
-0D 12 87 12 1E D2 E0 D1 22 C4 BA D1 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 21 1E 42 CC 21 BE 40
-C0 C5 FE FF A2 53 00 20 1A 42 00 20 8A 43 00 00
-30 4D 60 D1 84 4C 4F 4F 50 00 39 40 E2 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 1E 42
-00 20 A2 83 00 20 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE C7 85 2B 4C 4F 4F 50 39 40
-D0 C5 E5 3F 74 D2 85 4C 45 41 56 45 1A 42 CC 21
-BA 40 F2 C5 00 00 BA 40 AC C5 02 00 B2 50 06 00
-CC 21 A2 53 00 20 2A 52 19 42 00 20 89 4A 00 00
-30 4D B6 D2 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 D2 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA CF 2C C4
-10 00 2C C4 00 00 C0 C5 2C C4 00 00 24 CC E2 C5
-38 D3 74 C7 2C C4 CE 21 3C C4 EA C4 24 CC F2 C4
-12 D0 2C C4 D0 21 F2 C4 22 C4 52 CE 05 46 4F 52
-54 48 84 12 52 D3 A4 DD 68 D6 1A DF 5C D3 4E D6
-A8 D2 E2 DE 0E DE 2C DE 60 D4 F0 DE 36 DE 00 00
-98 DD 7E CE 22 DE 00 00 18 D2 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 21 38 40 D2 21 B5 3F FA CE
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 21 38 40 D0 21 A2 3F E6 C9 04 4F 4E 4C 59 00
-82 43 D2 21 30 4D 4C D2 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 21 E0 21 30 4D 62 D3 C0 D3
-D4 D3 E4 D3 3A 4E 82 4A CE 21 2E 4E 82 4E CC 21
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 D3 09 50 57 52 5F 53 54 41
-54 45 84 12 DC D3 4A D6 A2 DF 38 D2 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 D4 92 42 0C 18
-28 D4 EF 3F 18 D4 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 21 26 D4 92 42 CC 21 28 D4 30 4D 2C D4
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 21 0E 18
-92 42 CC 21 0C 18 EC 3F 1C D3 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 DA FF FA 23
-B0 12 7E CD B2 40 A2 DF 0C 18 B2 40 4A D6 0E 18
-CA 3F 9C D1 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C C9 06 0D 1B 5B 37 6D 23 00 34 C9
-5E C7 7C C9 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 C9 2C C4 30 FF 74 C7 20 C5 26 C7
-7C C9 0B 62 79 74 65 73 20 66 72 65 65 20 CE CD
-7A D4 04 57 41 52 4D 00 30 40 AC D4 EC D1 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A CC 01
-B2 43 02 02 B2 D3 06 02 F2 D0 06 00 24 02 F2 D3
-26 02 F2 40 FD 00 22 02 F2 40 A5 00 A1 01 F2 40
-10 00 A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40
-29 01 80 01 B2 40 0B 00 82 01 B2 40 E9 01 84 01
-39 40 00 01 B2 D0 10 00 86 01 92 D2 5E 01 08 18
-38 40 59 14 18 83 FE 23 19 83 FA 23 3A 40 1A D5
-39 40 DA FF 89 4A 00 00 29 53 FC 23 92 42 02 18
-E4 FF B2 40 18 00 0A 18 39 40 00 20 89 43 00 00
-29 53 39 90 FF 2F FA 2B 31 40 E0 20 3F 40 80 20
-37 40 22 C4 36 40 B4 C4 35 40 00 C4 34 40 0C C4
-B2 40 0A 00 E2 21 B2 43 B4 21 92 C3 30 01 18 42
-08 18 F2 B0 10 00 00 02 04 20 38 E3 18 53 82 48
-08 18 B2 40 81 00 00 05 B2 40 03 00 06 05 B2 40
-00 21 08 05 F2 D0 30 00 0A 02 92 C3 00 05 92 D3
-1A 05 3D 40 18 D6 38 90 0A 00 3A 27 38 90 16 00
-37 2F 28 93 10 23 05 27 08 D5 8A D3 09 41 53 53
-45 4D 42 4C 45 52 84 12 52 D3 72 DC E0 DC 26 DC
-4A DD EC DB 72 DD F0 D8 00 00 E2 DB 96 DC 44 DC
-84 DC 00 DA 00 00 00 00 82 DD 86 D3 A4 D4 85 48
-49 32 4C 4F 0D 12 87 12 74 C7 B4 D1 24 CC 76 CE
-90 D3 26 D6 22 C4 0E D5 04 43 4F 44 45 00 B0 12
-80 CF A2 82 CC 21 0D 12 87 12 72 CF AC C5 60 D6
-00 00 07 45 4E 44 43 4F 44 45 0D 12 87 12 AA D3
-2A CF 22 C4 1C D6 03 41 53 4D 92 42 E0 21 C0 21
-B2 40 2A D6 E0 21 E3 3F 82 D6 06 45 4E 44 41 53
-4D 00 92 42 C0 21 E0 21 E8 3F 00 00 05 43 4F 4C
-4F 4E 1A 42 CC 21 BA 40 0D 12 00 00 BA 40 87 12
-02 00 A2 52 CC 21 B2 43 BE 21 30 40 AA D3 00 00
-05 4C 4F 32 48 49 A2 83 CC 21 1A 42 CC 21 EE 3F
-38 40 C6 21 39 48 2A 48 09 5A 1A 52 CA 21 09 9A
-03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 21
-30 4D 87 12 00 CA 5E CA BA C5 24 D7 18 CB B0 C5
-64 CE 46 D7 26 D7 29 4E 39 90 86 12 02 20 2E 53
-30 41 39 90 85 12 03 20 1E 4E 02 00 30 41 39 90
-84 12 01 20 2E 52 30 41 19 42 CC 21 A2 53 CC 21
-89 4E 00 00 3E 40 29 00 12 12 CA 21 92 53 CA 21
-87 12 00 CA 18 CB B0 C5 76 D7 6C D7 21 53 3E 90
-10 00 BE 2D 30 41 78 D7 B2 41 CA 21 22 D3 30 41
-0D 12 87 12 20 C6 F0 D6 8A D7 82 43 C4 21 92 42
-CC 21 C2 21 A2 53 CC 21 0A 4E 3E 4F FA 90 23 00
-00 00 34 20 92 53 CA 21 B0 12 12 D7 0E 93 04 20
-B2 40 00 03 C4 21 27 3C 1E 93 04 20 B2 40 10 03
-C4 21 21 3C 2E 93 04 20 B2 40 20 03 C4 21 1B 3C
-2E 92 04 20 B2 40 20 02 C4 21 15 3C 3E 92 04 20
-B2 40 30 02 C4 21 0F 3C 3E 93 04 20 B2 40 30 03
-C4 21 09 3C B2 40 30 00 C4 21 19 42 CC 21 A2 53
-CC 21 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00
-00 00 08 20 B2 40 10 02 C4 21 92 53 CA 21 B0 12
-12 D7 EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00
-C4 21 92 53 CA 21 B0 12 58 D7 0E 20 B2 50 10 00
-C4 21 3E 40 2B 00 B0 12 58 D7 33 24 92 92 C6 21
-CA 21 02 24 92 53 CA 21 8E 10 82 5E C4 21 D3 3F
-B0 12 58 D7 F9 23 B2 50 10 00 C4 21 3E 40 28 00
-B0 12 12 D7 B0 12 48 D7 E8 3F 0D 12 87 12 20 C6
-F0 D6 84 D8 FE 90 26 00 00 00 3E 40 20 00 04 20
-B2 50 82 00 C4 21 C1 3F B0 12 58 D7 DE 23 B2 50
-80 00 C4 21 3E 40 28 00 B0 12 12 D7 B0 12 48 D7
-D4 23 3D 40 64 CE 30 4D 46 C8 04 52 45 54 49 00
-0D 12 87 12 2C C4 00 13 24 CC 22 C4 2C C4 2C 00
-80 D7 7A D8 D6 D8 2E 4E 1E D2 C4 21 19 42 C2 21
-90 3F E0 D6 03 4D 4F 56 84 12 CC D8 00 40 E4 D8
-05 4D 4F 56 2E 42 84 12 CC D8 40 40 00 00 03 41
-44 44 84 12 CC D8 00 50 FE D8 05 41 44 44 2E 42
-84 12 CC D8 40 50 0A D9 04 41 44 44 43 00 84 12
-CC D8 00 60 18 D9 06 41 44 44 43 2E 42 00 84 12
-CC D8 40 60 BA D8 04 53 55 42 43 00 84 12 CC D8
-00 70 36 D9 06 53 55 42 43 2E 42 00 84 12 CC D8
-40 70 44 D9 03 53 55 42 84 12 CC D8 00 80 54 D9
-05 53 55 42 2E 42 84 12 CC D8 40 80 BC D6 03 43
-4D 50 84 12 CC D8 00 90 6E D9 05 43 4D 50 2E 42
-84 12 CC D8 40 90 AA D6 04 44 41 44 44 00 84 12
-CC D8 00 A0 88 D9 06 44 41 44 44 2E 42 00 84 12
-CC D8 40 A0 7A D9 03 42 49 54 84 12 CC D8 00 B0
-A6 D9 05 42 49 54 2E 42 84 12 CC D8 40 B0 B2 D9
-03 42 49 43 84 12 CC D8 00 C0 C0 D9 05 42 49 43
-2E 42 84 12 CC D8 40 C0 CC D9 03 42 49 53 84 12
-CC D8 00 D0 DA D9 05 42 49 53 2E 42 84 12 CC D8
-40 D0 00 00 03 58 4F 52 84 12 CC D8 00 E0 F4 D9
-05 58 4F 52 2E 42 84 12 CC D8 40 E0 26 D9 03 41
-4E 44 84 12 CC D8 00 F0 0E DA 05 41 4E 44 2E 42
-84 12 CC D8 40 F0 20 C6 80 D7 2C DA 1A 42 C4 21
-B2 F0 70 00 C4 21 8A 10 3A F0 0F 00 82 DA C4 21
-4A 3F 60 D9 03 52 52 43 84 12 26 DA 00 10 44 DA
-05 52 52 43 2E 42 84 12 26 DA 40 10 50 DA 04 53
-57 50 42 00 84 12 26 DA 80 10 5E DA 03 52 52 41
-84 12 26 DA 00 11 6C DA 05 52 52 41 2E 42 84 12
-26 DA 40 11 78 DA 03 53 58 54 84 12 26 DA 80 11
-00 00 04 50 55 53 48 00 84 12 26 DA 00 12 92 DA
-06 50 55 53 48 2E 42 00 84 12 26 DA 40 12 E6 D9
-04 43 41 4C 4C 00 84 12 26 DA 80 12 2C C4 2C 00
-80 D7 7A D8 C6 DA 59 42 C4 21 5A 42 C5 21 82 4A
-C4 21 BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A
-0A 49 3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A
-0D 12 87 12 5E C7 7C C9 0D 6F 75 74 20 6F 66 20
-62 6F 75 6E 64 73 C8 CD A0 DA 05 50 55 53 48 4D
-84 12 BC DA 00 15 0A DB 04 50 4F 50 4D 00 84 12
-BC DA 00 17 20 C6 F0 D6 2A DB 82 43 C4 21 92 42
-CC 21 C2 21 A2 53 CC 21 92 53 CA 21 3E 40 2C 00
-87 12 00 CA 18 CB B0 C5 64 CE 7A D8 4E DB 0A 4E
-3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F 86 DA
-04 52 52 43 4D 00 84 12 24 DB 50 00 60 DB 04 52
-52 41 4D 00 84 12 24 DB 50 01 6E DB 04 52 4C 41
-4D 00 84 12 24 DB 50 02 7C DB 04 52 52 55 4D 00
-84 12 24 DB 50 03 85 12 00 3C 8A DB 03 53 3E 3D
-85 12 00 38 9C DB 02 53 3C 00 85 12 00 34 18 DB
-03 30 3E 3D 85 12 00 30 B0 DB 02 30 3C 00 85 12
-00 30 00 00 02 55 3C 00 85 12 00 2C C4 DB 03 55
-3E 3D 85 12 00 28 BA DB 03 30 3C 3E 85 12 00 24
-D8 DB 02 30 3D 00 85 12 00 20 52 C8 02 49 46 00
-1A 42 CC 21 8A 4E 00 00 A2 53 CC 21 0E 4A 30 4D
-CE DB 04 54 48 45 4E 00 1A 42 CC 21 08 4E 3E 4F
-09 48 29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA
-00 00 30 4D 96 D9 04 45 4C 53 45 00 1A 42 CC 21
-BA 40 00 3C 00 00 A2 53 CC 21 2F 83 8F 4A 00 00
-E3 3F 02 DC 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F
-19 42 CC 21 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B
-3A F0 FF 03 08 DA 89 48 00 00 A2 53 CC 21 30 4D
-1A DA 05 41 47 41 49 4E 0D 12 87 12 96 DB 4A DC
-22 C4 00 00 05 57 48 49 4C 45 0D 12 87 12 F0 DB
-70 C4 22 C4 A6 DB 06 52 45 50 45 41 54 00 0D 12
-87 12 96 DB 4A DC 08 DC 22 C4 AC DC 3D 41 08 4E
-3E 4F 2A 48 0A 93 04 20 98 42 CC 21 00 00 30 4D
-88 43 00 00 C3 3F B0 DA 03 42 57 31 84 12 AA DC
-00 00 C8 DC 03 42 57 32 84 12 AA DC 00 00 D4 DC
-03 42 57 33 84 12 AA DC 00 00 EC DC 3D 41 1A 42
-CC 21 28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 21
-8E 4A 00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00
-03 46 57 31 84 12 EA DC 00 00 10 DD 03 46 57 32
-84 12 EA DC 00 00 1C DD 03 46 57 33 84 12 EA DC
-00 00 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10
-02 24 3E E0 00 08 30 4D 28 DD 04 47 4F 54 4F 00
-0D 12 87 12 96 DB 54 CE 1A CC 22 C4 00 00 05 3F
-47 4F 54 4F 0D 12 87 12 32 DD 54 CE 1A CC 22 C4
-00 00 03 4A 4D 50 0D 12 87 12 54 CE 78 DC 22 C4
-5E DD 04 3F 4A 4D 50 00 0D 12 87 12 32 DD 54 CE
-70 C4 4A DC 22 C4 36 D1 07 7B 54 4F 4F 4C 53 7D
-30 4D 96 D6 03 41 4E 44 3E FF 30 4D BA D3 02 2E
-53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40
-80 20 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11
-0D 12 87 12 2C C4 3C 00 C6 C8 5E C7 2C C4 08 00
-C6 C8 2C C4 3E 00 C6 C8 FC C8 82 C4 82 C4 8E C5
-BA C5 FA DD 5A C4 5A C4 22 C4 C0 C5 F8 C5 EA C4
-26 C7 2C C4 02 00 D0 C5 FC DD 22 C4 AE DD 03 2E
-52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 20 D2 3F
-BE CA 01 3F 2E 4E 30 40 26 C7 46 D4 03 50 41 44
-85 12 E4 20 02 D5 05 57 4F 52 44 53 0D 12 87 12
-78 C9 2C C4 03 00 12 C9 2C C4 D0 21 EA C4 30 DE
-2C C4 10 00 3C C4 18 C5 EA D2 2C C4 00 00 3C C4
-2C C4 10 00 3C C4 18 C5 2C C4 00 00 C0 C5 3C C4
-F8 C5 30 DE 18 C5 EA C4 A4 C5 B0 C5 8C DE 5A C4
-5A C4 F8 C5 3C C4 30 DE 18 C5 EA C4 2C C4 02 00
-D0 C5 6E DE 4C C4 B0 C5 CE DE 3C C4 2C C4 02 00
-20 C5 EA C4 92 C4 30 DE 18 C5 F2 C4 3C C4 6C CC
-2C C4 7F 00 A8 DD 34 C9 00 C5 2C C4 0F 00 A8 DD
-2C C4 10 00 70 C4 20 C5 12 C9 AC C5 5A DE 5A C4
-22 C4 E4 D2 03 4D 41 58 2E 9F 07 38 2F 53 30 4D
-D4 DE 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D F8 D1
-03 55 2E 52 0D 12 87 12 A8 C4 42 C6 2C C4 00 00
-A2 C6 D4 C6 F0 C6 B4 C4 82 C4 20 C5 2C C4 00 00
-D8 DE 12 C9 34 C9 22 C4 C8 D3 04 44 55 4D 50 00
-0D 12 12 12 E2 21 B2 40 10 00 E2 21 2E 5F 87 12
-70 C4 82 C4 82 C4 26 C7 2C C4 01 00 20 C5 26 C7
-2C C4 FE FF A8 DD C0 C5 78 C9 F8 C5 2C C4 07 00
-F4 DE FC C8 F8 C5 2C C4 10 00 18 C5 F8 C5 C0 C5
-F8 C5 00 C5 2C C4 03 00 F4 DE E2 C5 60 DF FC C8
-FC C8 F8 C5 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5
-00 C5 2C C4 7E 00 E6 DE 20 C6 D8 DE C6 C8 E2 C5
-7E DF 2C C4 10 00 D0 C5 48 DF B4 C4 2C C6 F2 C4
-22 C4
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 70 DD
+E6 D6 E6 DE 64 D3 42 D6 B0 D2 AE DE DA DD F8 DD
+68 D4 BC DE 02 DE 00 00 64 DD 5E CE EE DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 3E D6
+6E DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 6E DF 0C 18 B2 40
+3E D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 02 02 B2 D3
+06 02 F2 D0 06 00 24 02 F2 D3 26 02 F2 40 FD 00
+22 02 F2 40 A5 00 A1 01 F2 40 10 00 A0 01 D2 43
+A1 01 B2 40 00 A5 60 01 B2 40 29 01 80 01 B2 40
+0B 00 82 01 B2 40 E9 01 84 01 39 40 00 01 B2 D0
+10 00 86 01 92 D2 5E 01 08 18 38 40 59 14 18 83
+FE 23 19 83 FA 23 39 40 26 00 29 83 B9 40 14 D5
+DA FF FB 23 B2 40 54 C8 E4 FF B2 40 18 00 0A 18
+39 40 00 10 29 83 89 43 00 20 FC 23 31 40 E0 20
+3F 40 80 20 37 40 22 C4 36 40 B4 C4 35 40 00 C4
+34 40 0C C4 B2 40 0A 00 DC 21 B2 43 B4 21 92 C3
+30 01 18 42 08 18 F2 B0 10 00 00 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 00 05 92 42 02 18
+06 05 92 42 04 18 08 05 F2 D0 30 00 0A 02 92 C3
+00 05 92 D3 1A 05 3D 40 0C D6 38 90 0A 00 44 27
+38 90 16 00 41 2F 28 93 1A 23 0F 27 AE D4 92 D3
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A D3 3E DC
+AC DC F2 DB 16 DD B8 DB 3E DD D2 D8 00 00 AE DB
+62 DC 10 DC 50 DC E2 D9 00 00 00 00 4E DD 8E D3
+A4 D1 85 48 49 32 4C 4F 0D 12 87 12 74 C7 BC D1
+0C CC 56 CE 98 D3 1A D6 22 C4 08 D5 04 43 4F 44
+45 00 B0 12 82 CF A2 82 C6 21 0D 12 87 12 74 CF
+AC C5 54 D6 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 D3 0A CF 22 C4 10 D6 03 41 53 4D 92 42
+DA 21 E0 21 B2 40 1E D6 DA 21 E3 3F 76 D6 06 45
+4E 44 41 53 4D 00 92 42 E0 21 DA 21 E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 21 BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 21 B2 43 BE 21 30 40
+B2 D3 00 00 05 4C 4F 32 48 49 A2 83 C6 21 1A 42
+C6 21 EE 3F 5C D6 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C CF 56 CE F8 D6 3D 41 2A 82 82 4A C6 21
+B4 3F 38 40 C0 21 39 48 2A 48 09 5A 1A 52 C4 21
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 21 30 4D 1C 15 87 12 E8 C9 46 CA BA C5 38 D7
+00 CB B0 C5 44 CE 5A D7 3A D7 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 24 D7 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 21 92 53 C4 21
+87 12 E8 C9 00 CB B0 C5 96 D7 8C D7 21 53 3E 90
+10 00 84 2D E2 2B 98 D7 B2 41 C4 21 DE 3F 0D 12
+87 12 20 C6 02 D7 A8 D7 0C 43 1B 42 C6 21 A2 53
+C6 21 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 21 B0 12 24 D7 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 21 B0 12 24 D7 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 21 B0 12
+76 D7 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 76 D7
+92 92 C0 21 C4 21 02 24 92 53 C4 21 8E 10 0C 5E
+D8 3F B0 12 76 D7 FA 23 3C 50 10 00 B0 12 5E D7
+EF 3F 0D 12 87 12 20 C6 02 D7 7C D8 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+76 D7 E5 23 3C 50 80 00 B0 12 5E D7 E0 3F 44 C8
+04 52 45 54 49 00 0D 12 87 12 2C C4 00 13 0C CC
+22 C4 2C C4 2C 00 9E D7 72 D8 BC D8 2E 4E 0E DC
+09 4B A5 3F D4 D6 03 4D 4F 56 84 12 B2 D8 00 40
+C6 D8 05 4D 4F 56 2E 42 84 12 B2 D8 40 40 00 00
+03 41 44 44 84 12 B2 D8 00 50 E0 D8 05 41 44 44
+2E 42 84 12 B2 D8 40 50 EC D8 04 41 44 44 43 00
+84 12 B2 D8 00 60 FA D8 06 41 44 44 43 2E 42 00
+84 12 B2 D8 40 60 A0 D8 04 53 55 42 43 00 84 12
+B2 D8 00 70 18 D9 06 53 55 42 43 2E 42 00 84 12
+B2 D8 40 70 26 D9 03 53 55 42 84 12 B2 D8 00 80
+36 D9 05 53 55 42 2E 42 84 12 B2 D8 40 80 B0 D6
+03 43 4D 50 84 12 B2 D8 00 90 50 D9 05 43 4D 50
+2E 42 84 12 B2 D8 40 90 9E D6 04 44 41 44 44 00
+84 12 B2 D8 00 A0 6A D9 06 44 41 44 44 2E 42 00
+84 12 B2 D8 40 A0 5C D9 03 42 49 54 84 12 B2 D8
+00 B0 88 D9 05 42 49 54 2E 42 84 12 B2 D8 40 B0
+94 D9 03 42 49 43 84 12 B2 D8 00 C0 A2 D9 05 42
+49 43 2E 42 84 12 B2 D8 40 C0 AE D9 03 42 49 53
+84 12 B2 D8 00 D0 BC D9 05 42 49 53 2E 42 84 12
+B2 D8 40 D0 00 00 03 58 4F 52 84 12 B2 D8 00 E0
+D6 D9 05 58 4F 52 2E 42 84 12 B2 D8 40 E0 08 D9
+03 41 4E 44 84 12 B2 D8 00 F0 F0 D9 05 41 4E 44
+2E 42 84 12 B2 D8 40 F0 20 C6 9E D7 0E DA 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 42 D9
+03 52 52 43 84 12 08 DA 00 10 20 DA 05 52 52 43
+2E 42 84 12 08 DA 40 10 2C DA 04 53 57 50 42 00
+84 12 08 DA 80 10 3A DA 03 52 52 41 84 12 08 DA
+00 11 48 DA 05 52 52 41 2E 42 84 12 08 DA 40 11
+54 DA 03 53 58 54 84 12 08 DA 80 11 00 00 04 50
+55 53 48 00 84 12 08 DA 00 12 6E DA 06 50 55 53
+48 2E 42 00 84 12 08 DA 40 12 C8 D9 04 43 41 4C
+4C 00 84 12 08 DA 80 12 1A 53 0E 4A 0D 12 87 12
+5E C7 64 C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 CD 20 C6 02 D7 BA DA 0C 43 1B 42 C6 21
+A2 53 C6 21 92 53 C4 21 3E 40 2C 00 1C 15 87 12
+E8 C9 00 CB B0 C5 44 CE DA DA 1B 17 87 12 72 D8
+E2 DA 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 62 DA
+04 52 52 43 4D 00 84 12 B4 DA 50 00 10 DB 04 52
+52 41 4D 00 84 12 B4 DA 50 01 1E DB 04 52 4C 41
+4D 00 84 12 B4 DA 50 02 2C DB 04 52 52 55 4D 00
+84 12 B4 DA 50 03 7C DA 05 50 55 53 48 4D 84 12
+B4 DA 00 15 48 DB 04 50 4F 50 4D 00 84 12 B4 DA
+00 17 85 12 00 3C 3A DB 03 53 3E 3D 85 12 00 38
+68 DB 02 53 3C 00 85 12 00 34 56 DB 03 30 3E 3D
+85 12 00 30 7C DB 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C 90 DB 03 55 3E 3D 85 12
+00 28 86 DB 03 30 3C 3E 85 12 00 24 A4 DB 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 21
+8A 4E 00 00 A2 53 C6 21 0E 4A 30 4D 9A DB 04 54
+48 45 4E 00 1A 42 C6 21 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+78 D9 04 45 4C 53 45 00 1A 42 C6 21 BA 40 00 3C
+00 00 A2 53 C6 21 2F 83 8F 4A 00 00 E3 3F CE DB
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 21
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 21 30 4D FC D9 05 41
+47 41 49 4E 0D 12 87 12 62 DB 16 DC 22 C4 00 00
+05 57 48 49 4C 45 0D 12 87 12 BC DB 70 C4 22 C4
+72 DB 06 52 45 50 45 41 54 00 0D 12 87 12 62 DB
+16 DC D4 DB 22 C4 78 DC 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 21 00 00
+30 4D 8C DA 03 42 57 31 84 12 76 DC E2 21 94 DC
+03 42 57 32 84 12 76 DC E4 21 A0 DC 03 42 57 33
+84 12 76 DC E6 21 B8 DC 3D 41 1A 42 C6 21 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 21 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 B6 DC E8 21 DC DC 03 46 57 32 84 12 B6 DC
+EA 21 E8 DC 03 46 57 33 84 12 B6 DC EC 21 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D F4 DC 04 47 4F 54 4F 00 0D 12 87 12
+62 DB 34 CE 02 CC 22 C4 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 FE DC 34 CE 02 CC 22 C4 00 00 03 4A
+4D 50 0D 12 87 12 34 CE 44 DC 22 C4 2A DD 04 3F
+4A 4D 50 00 0D 12 87 12 FE DC 34 CE 70 C4 16 DC
+22 C4 40 D1 07 7B 54 4F 4F 4C 53 7D 30 4D 8A D6
+03 41 4E 44 3E FF 30 4D C2 D3 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 20 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C C4 3C 00 B0 C8 5E C7 2C C4 08 00 B0 C8 2C C4
+3E 00 B0 C8 EC C8 82 C4 82 C4 8E C5 BA C5 C6 DD
+5A C4 5A C4 22 C4 C0 C5 F8 C5 EA C4 26 C7 2C C4
+02 00 D0 C5 C8 DD 22 C4 7A DD 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 20 D2 3F 42 D0 01 3F
+2E 4E 30 40 26 C7 4E D4 03 50 41 44 85 12 E4 20
+A8 D4 05 57 4F 52 44 53 0D 12 87 12 52 C9 2C C4
+03 00 02 C9 2C C4 CA 21 EA C4 FC DD 2C C4 10 00
+3C C4 18 C5 F2 D2 2C C4 00 00 3C C4 2C C4 10 00
+3C C4 18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 FC DD
+18 C5 EA C4 A4 C5 B0 C5 58 DE 5A C4 5A C4 F8 C5
+3C C4 FC DD 18 C5 EA C4 2C C4 02 00 D0 C5 3A DE
+4C C4 B0 C5 9A DE 3C C4 2C C4 02 00 20 C5 EA C4
+92 C4 FC DD 18 C5 F2 C4 3C C4 54 CC 2C C4 7F 00
+74 DD 24 C9 00 C5 2C C4 0F 00 74 DD 2C C4 10 00
+70 C4 20 C5 02 C9 AC C5 26 DE 5A C4 22 C4 EC D2
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D A0 DE 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D2 03 55 2E 52
+0D 12 87 12 A8 C4 42 C6 2C C4 00 00 A2 C6 D4 C6
+F0 C6 B4 C4 82 C4 20 C5 2C C4 00 00 A4 DE 02 C9
+24 C9 22 C4 D0 D3 04 44 55 4D 50 00 0D 12 12 12
+DC 21 B2 40 10 00 DC 21 2E 5F 87 12 70 C4 82 C4
+82 C4 26 C7 2C C4 01 00 20 C5 26 C7 2C C4 FE FF
+74 DD C0 C5 52 C9 F8 C5 2C C4 07 00 C0 DE EC C8
+F8 C5 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5
+2C C4 03 00 C0 DE E2 C5 2C DF EC C8 EC C8 F8 C5
+2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4
+7E 00 B2 DE 20 C6 A4 DE B0 C8 E2 C5 4A DF 2C C4
+10 00 D0 C5 14 DF B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-1A D5
+14 D5
 q
index 78e5dce..bb6d1ca 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 C8 80 3E 00 24 05 00 18 00 AE DF 56 D6
-2C C8 3E C8 00 00 00 00
+10 00 11 00 00 4A 80 3E 05 00 18 00 6E DF 3E D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,398 +55,394 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 40 C9 08 C9 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 40 C9 08 C9 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 3E C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 A4 C8 3B 40 6E C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 52 C8 4D 15 A2 B3 1C 05
-FD 27 B2 40 11 00 0E 05 E2 C2 22 02 30 41 B2 40
-13 00 0E 05 E2 D2 22 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C8 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 0C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05
-FD 27 82 48 0E 05 30 4D 9A C8 2D 83 92 B3 1C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 C7 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C7 04 45 4D 49
-54 00 30 40 C4 C8 CC C8 04 45 43 48 4F 00 B2 40
-82 48 92 C8 82 43 E4 21 30 4D 5C C7 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C8 92 43 E4 21 30 4D
-0E C7 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C9 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C9 EF 3F 2C C9 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C7 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C9 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C9 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C8 04 28 43 52 29 00
-0D 12 87 12 88 C9 02 0D 0A 00 40 C9 22 C4 92 C7
-02 43 52 00 30 40 70 C9 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C9 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E C9 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 C9
-82 53 22 00 0D 12 87 12 2C C4 88 C9 30 CC B8 C9
-2C C4 22 00 0C CA A6 C9 DA C9 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC C8 82 2E 22 00 0D 12 87 12 C4 C9 2C C4 40 C9
-30 CC 22 C4 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C4 34 40 0C C4 30 4D 8C C5 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 CB 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 CB 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C8 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E CC 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C C4 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C9 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 CC 20 C6 0C CA
-A2 CC 3D 40 AA CC E1 22 44 3E AC CC 0A 4E 3E 4F
-3D 40 C2 CC 37 27 3D 40 9C CC 1A E2 BE 21 B8 27
-B2 23 C4 CC 3E 4F 3D 40 9C CC BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CF CC 3F
-1E CC 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 CC FE CC B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 C5
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 C9 05 0D 0A 6F
-6B 20 40 C9 D6 C7 08 C9 96 CC D6 C4 68 C5 88 C9
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CD
-2C C4 30 FF 74 C7 A4 C5 88 C9 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CD 38 C6 EA C4 B0 C5 2A CD
-88 C9 05 0D 0A 20 20 20 AC C5 32 CD F0 C7 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 D4 16 D5
-B2 40 60 C8 54 C8 B2 40 C4 C8 D4 C8 B2 40 70 C9
-86 C9 B2 40 AE C7 D4 C7 82 43 DC DC 82 43 E8 DC
-82 43 F4 DC 82 43 24 DD 82 43 30 DD 82 43 3C DD
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C8 B0 12 96 CD A2 B3
-1C 05 FD 27 B2 40 11 00 0E 05 E2 C2 22 02 92 C3
-1C 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 1C 05 F3 23 0D 12 87 12 88 C9 04 1B
-5B 37 6D 00 40 C9 2C C4 E4 21 EA C4 4C C4 B0 C5
-32 CE 88 C9 05 6C 69 6E 65 3A 40 C9 38 C5 26 C7
-DE C8 40 C9 88 C9 04 1B 5B 30 6D 00 40 C9 2E D4
-A6 C9 84 CD 7E CD 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C9 2C C4 C8 CD 30 CC 22 C4 64 CA 01 27
-0D 12 87 12 20 C6 0C CA 6A CA B0 C5 70 CE 22 C4
-CC CC 3E C6 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 CE 01 5D B2 43 BE 21
-30 4D 80 CE 83 5B 27 5D 0D 12 87 12 60 CE 2C C4
-2C C4 30 CC 30 CC 22 C4 BE 4F 02 00 3E 4F 30 4D
-6A C9 82 49 53 00 0D 12 87 12 38 C6 EA C4 B0 C5
-CC CE 98 CE 2C C4 A8 CE 30 CC 22 C4 60 CE A8 CE
-22 C4 B2 CE 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 C9 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 CD 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C6 0C CA 6A CA 4C C4 B0 C5 70 CE
-68 C5 B0 C5 32 CF 2C C4 2C C4 30 CC 30 CC 2C C4
-30 CC 30 CC 22 C4 82 9F BC 21 2C 25 0D 12 87 12
-88 C9 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CD 94 CE 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C C4 22 C4 30 CC 36 CF 82 CE 22 C4 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 CF 01 3A 30 12 6E CF 0D 12 87 12
-E6 C9 20 C6 0C CA 98 CF 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 CA 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CF BA 40 86 12 FC FF DF 3C 72 CC
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CF BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CF 06 43
-52 45 41 54 45 00 B0 12 8C CF BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CC 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 D0 05 44 45 46 45 52 B0 12 8C CF BA 40 30 40
-FC FF BA 40 2E D0 FE FF A9 3C FE CF 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CF 86 5B
-54 48 45 4E 5D 00 30 4D 7E D0 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C4 01 00 20 C6 0C CA 78 CC
-3C C4 B0 C5 FE D0 82 C4 82 C4 88 C9 04 5B 49 46
-5D 00 54 D0 BA C5 C0 D0 62 C9 2E C5 AC C5 F6 D0
-82 C4 82 C4 88 C9 06 5B 45 4C 53 45 5D 00 54 D0
-BA C5 E4 D0 62 C9 38 C5 3C C4 B0 C5 F6 D0 2E C5
-AC C5 F6 D0 88 C9 06 5B 54 48 45 4E 5D 00 54 D0
-BA C5 F6 D0 38 C5 4C C4 BA C5 9A D0 22 C4 62 C9
-88 C9 05 0D 0A 6B 6F 20 40 C9 D6 C7 86 CC AC C5
-9A D0 8A D0 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 D1 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 0C CA 6A CA 64 C4 5C C5 22 C4
-24 D1 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C6 0C CA 6A CA 64 C4 22 C4 5C D1 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CC 06 4D 41 52
-4B 45 52 00 B0 12 8C CF BA 40 84 12 FC FF BA 40
-5A D1 FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 CE 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 C5 00 00
-2E 53 30 4D 32 D0 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C9 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C D0 85 42 45 47 49 4E 30 40
-74 C7 E6 D1 85 55 4E 54 49 4C 39 40 B0 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CE 85 41 47 41 49 4E 39 40 AC C5 EF 3F
-C8 CF 85 57 48 49 4C 45 0D 12 87 12 AC D1 70 C4
-22 C4 EC CE 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D2 EC D1 22 C4 C6 D1 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 C5 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C D1
-84 4C 4F 4F 50 00 39 40 E2 C5 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C7 85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F
-80 D2 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 C5
-00 00 BA 40 AC C5 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 D2
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D2 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 D0 2C C4 10 00 2C C4
-00 00 C0 C5 2C C4 00 00 30 CC E2 C5 44 D3 74 C7
-2C C4 CE 21 3C C4 EA C4 30 CC F2 C4 1E D0 2C C4
-D0 21 F2 C4 22 C4 5E CE 05 46 4F 52 54 48 84 12
-5E D3 B0 DD 74 D6 26 DF 68 D3 5A D6 B4 D2 EE DE
-1A DE 38 DE 6C D4 FC DE 42 DE 00 00 A4 DD 8A CE
-2E DE 00 00 24 D2 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 CF 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 C9 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 D2 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E D3 CC D3 E0 D3 F0 D3
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D3 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D3 56 D6 AE DF 44 D2 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D4 92 42 0C 18 34 D4 EF 3F
-24 D4 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 D4 92 42 CC 21 34 D4 30 4D 38 D4 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 D3 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 DA FF FA 23 B0 12 8A CD
-B2 40 AE DF 0C 18 B2 40 56 D6 0E 18 CA 3F A8 D1
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C9 06 0D 1B 5B 37 6D 23 00 40 C9 5E C7 88 C9
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C9 2C C4 30 FF 74 C7 20 C5 26 C7 88 C9 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CD 86 D4 04 57
-41 52 4D 00 30 40 B8 D4 F8 D1 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 02 02
-B2 D3 06 02 F2 D0 06 00 24 02 F2 D3 26 02 F2 40
-FD 00 22 02 F2 40 A5 00 A1 01 F2 40 10 00 A0 01
-D2 43 A1 01 B2 40 00 A5 60 01 B2 40 29 01 80 01
-B2 40 0B 00 82 01 B2 40 E9 01 84 01 39 40 00 01
-B2 D0 10 00 86 01 92 D2 5E 01 08 18 38 40 59 14
-18 83 FE 23 19 83 FA 23 3A 40 26 D5 39 40 DA FF
-89 4A 00 00 29 53 FC 23 92 42 02 18 E4 FF B2 40
-18 00 0A 18 39 40 00 20 89 43 00 00 29 53 39 90
-FF 2F FA 2B 31 40 E0 20 3F 40 80 20 37 40 22 C4
-36 40 B4 C4 35 40 00 C4 34 40 0C C4 B2 40 0A 00
-E2 21 B2 43 B4 21 92 C3 30 01 18 42 08 18 F2 B0
-10 00 00 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 00 05 B2 40 11 00 06 05 B2 40 00 4A 08 05
-F2 D0 30 00 0A 02 92 C3 00 05 92 D3 1A 05 3D 40
-24 D6 38 90 0A 00 3A 27 38 90 16 00 37 2F 28 93
-10 23 05 27 14 D5 96 D3 09 41 53 53 45 4D 42 4C
-45 52 84 12 5E D3 7E DC EC DC 32 DC 56 DD F8 DB
-7E DD FC D8 00 00 EE DB A2 DC 50 DC 90 DC 0C DA
-00 00 00 00 8E DD 92 D3 B0 D4 85 48 49 32 4C 4F
-0D 12 87 12 74 C7 C0 D1 30 CC 82 CE 9C D3 32 D6
-22 C4 1A D5 04 43 4F 44 45 00 B0 12 8C CF A2 82
-CC 21 0D 12 87 12 7E CF AC C5 6C D6 00 00 07 45
-4E 44 43 4F 44 45 0D 12 87 12 B6 D3 36 CF 22 C4
-28 D6 03 41 53 4D 92 42 E0 21 C0 21 B2 40 36 D6
-E0 21 E3 3F 8E D6 06 45 4E 44 41 53 4D 00 92 42
-C0 21 E0 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
-CC 21 BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
-CC 21 B2 43 BE 21 30 40 B6 D3 00 00 05 4C 4F 32
-48 49 A2 83 CC 21 1A 42 CC 21 EE 3F 38 40 C6 21
-39 48 2A 48 09 5A 1A 52 CA 21 09 9A 03 24 7E 9A
-FC 27 1A 83 0E 4A 2A 88 82 4A CA 21 30 4D 87 12
-0C CA 6A CA BA C5 30 D7 24 CB B0 C5 70 CE 52 D7
-32 D7 29 4E 39 90 86 12 02 20 2E 53 30 41 39 90
-85 12 03 20 1E 4E 02 00 30 41 39 90 84 12 01 20
-2E 52 30 41 19 42 CC 21 A2 53 CC 21 89 4E 00 00
-3E 40 29 00 12 12 CA 21 92 53 CA 21 87 12 0C CA
-24 CB B0 C5 82 D7 78 D7 21 53 3E 90 10 00 BE 2D
-30 41 84 D7 B2 41 CA 21 22 D3 30 41 0D 12 87 12
-20 C6 FC D6 96 D7 82 43 C4 21 92 42 CC 21 C2 21
-A2 53 CC 21 0A 4E 3E 4F FA 90 23 00 00 00 34 20
-92 53 CA 21 B0 12 1E D7 0E 93 04 20 B2 40 00 03
-C4 21 27 3C 1E 93 04 20 B2 40 10 03 C4 21 21 3C
-2E 93 04 20 B2 40 20 03 C4 21 1B 3C 2E 92 04 20
-B2 40 20 02 C4 21 15 3C 3E 92 04 20 B2 40 30 02
-C4 21 0F 3C 3E 93 04 20 B2 40 30 03 C4 21 09 3C
-B2 40 30 00 C4 21 19 42 CC 21 A2 53 CC 21 89 4E
-00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20
-B2 40 10 02 C4 21 92 53 CA 21 B0 12 1E D7 EB 3F
-FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 21 92 53
-CA 21 B0 12 64 D7 0E 20 B2 50 10 00 C4 21 3E 40
-2B 00 B0 12 64 D7 33 24 92 92 C6 21 CA 21 02 24
-92 53 CA 21 8E 10 82 5E C4 21 D3 3F B0 12 64 D7
-F9 23 B2 50 10 00 C4 21 3E 40 28 00 B0 12 1E D7
-B0 12 54 D7 E8 3F 0D 12 87 12 20 C6 FC D6 90 D8
-FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50 82 00
-C4 21 C1 3F B0 12 64 D7 DE 23 B2 50 80 00 C4 21
-3E 40 28 00 B0 12 1E D7 B0 12 54 D7 D4 23 3D 40
-70 CE 30 4D 4C C8 04 52 45 54 49 00 0D 12 87 12
-2C C4 00 13 30 CC 22 C4 2C C4 2C 00 8C D7 86 D8
-E2 D8 2E 4E 1E D2 C4 21 19 42 C2 21 90 3F EC D6
-03 4D 4F 56 84 12 D8 D8 00 40 F0 D8 05 4D 4F 56
-2E 42 84 12 D8 D8 40 40 00 00 03 41 44 44 84 12
-D8 D8 00 50 0A D9 05 41 44 44 2E 42 84 12 D8 D8
-40 50 16 D9 04 41 44 44 43 00 84 12 D8 D8 00 60
-24 D9 06 41 44 44 43 2E 42 00 84 12 D8 D8 40 60
-C6 D8 04 53 55 42 43 00 84 12 D8 D8 00 70 42 D9
-06 53 55 42 43 2E 42 00 84 12 D8 D8 40 70 50 D9
-03 53 55 42 84 12 D8 D8 00 80 60 D9 05 53 55 42
-2E 42 84 12 D8 D8 40 80 C8 D6 03 43 4D 50 84 12
-D8 D8 00 90 7A D9 05 43 4D 50 2E 42 84 12 D8 D8
-40 90 B6 D6 04 44 41 44 44 00 84 12 D8 D8 00 A0
-94 D9 06 44 41 44 44 2E 42 00 84 12 D8 D8 40 A0
-86 D9 03 42 49 54 84 12 D8 D8 00 B0 B2 D9 05 42
-49 54 2E 42 84 12 D8 D8 40 B0 BE D9 03 42 49 43
-84 12 D8 D8 00 C0 CC D9 05 42 49 43 2E 42 84 12
-D8 D8 40 C0 D8 D9 03 42 49 53 84 12 D8 D8 00 D0
-E6 D9 05 42 49 53 2E 42 84 12 D8 D8 40 D0 00 00
-03 58 4F 52 84 12 D8 D8 00 E0 00 DA 05 58 4F 52
-2E 42 84 12 D8 D8 40 E0 32 D9 03 41 4E 44 84 12
-D8 D8 00 F0 1A DA 05 41 4E 44 2E 42 84 12 D8 D8
-40 F0 20 C6 8C D7 38 DA 1A 42 C4 21 B2 F0 70 00
-C4 21 8A 10 3A F0 0F 00 82 DA C4 21 4A 3F 6C D9
-03 52 52 43 84 12 32 DA 00 10 50 DA 05 52 52 43
-2E 42 84 12 32 DA 40 10 5C DA 04 53 57 50 42 00
-84 12 32 DA 80 10 6A DA 03 52 52 41 84 12 32 DA
-00 11 78 DA 05 52 52 41 2E 42 84 12 32 DA 40 11
-84 DA 03 53 58 54 84 12 32 DA 80 11 00 00 04 50
-55 53 48 00 84 12 32 DA 00 12 9E DA 06 50 55 53
-48 2E 42 00 84 12 32 DA 40 12 F2 D9 04 43 41 4C
-4C 00 84 12 32 DA 80 12 2C C4 2C 00 8C D7 86 D8
-D2 DA 59 42 C4 21 5A 42 C5 21 82 4A C4 21 BE 90
-00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90
-10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12
-5E C7 88 C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
-64 73 D4 CD AC DA 05 50 55 53 48 4D 84 12 C8 DA
-00 15 16 DB 04 50 4F 50 4D 00 84 12 C8 DA 00 17
-20 C6 FC D6 36 DB 82 43 C4 21 92 42 CC 21 C2 21
-A2 53 CC 21 92 53 CA 21 3E 40 2C 00 87 12 0C CA
-24 CB B0 C5 70 CE 86 D8 5A DB 0A 4E 3E 4F 1A 83
-2A 92 CA 2F 8A 10 5A 06 6F 3F 92 DA 04 52 52 43
-4D 00 84 12 30 DB 50 00 6C DB 04 52 52 41 4D 00
-84 12 30 DB 50 01 7A DB 04 52 4C 41 4D 00 84 12
-30 DB 50 02 88 DB 04 52 52 55 4D 00 84 12 30 DB
-50 03 85 12 00 3C 96 DB 03 53 3E 3D 85 12 00 38
-A8 DB 02 53 3C 00 85 12 00 34 24 DB 03 30 3E 3D
-85 12 00 30 BC DB 02 30 3C 00 85 12 00 30 00 00
-02 55 3C 00 85 12 00 2C D0 DB 03 55 3E 3D 85 12
-00 28 C6 DB 03 30 3C 3E 85 12 00 24 E4 DB 02 30
-3D 00 85 12 00 20 58 C8 02 49 46 00 1A 42 CC 21
-8A 4E 00 00 A2 53 CC 21 0E 4A 30 4D DA DB 04 54
-48 45 4E 00 1A 42 CC 21 08 4E 3E 4F 09 48 29 53
-0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D
-A2 D9 04 45 4C 53 45 00 1A 42 CC 21 BA 40 00 3C
-00 00 A2 53 CC 21 2F 83 8F 4A 00 00 E3 3F 0E DC
-05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 21
-2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03
-08 DA 89 48 00 00 A2 53 CC 21 30 4D 26 DA 05 41
-47 41 49 4E 0D 12 87 12 A2 DB 56 DC 22 C4 00 00
-05 57 48 49 4C 45 0D 12 87 12 FC DB 70 C4 22 C4
-B2 DB 06 52 45 50 45 41 54 00 0D 12 87 12 A2 DB
-56 DC 14 DC 22 C4 B8 DC 3D 41 08 4E 3E 4F 2A 48
-0A 93 04 20 98 42 CC 21 00 00 30 4D 88 43 00 00
-C3 3F BC DA 03 42 57 31 84 12 B6 DC 00 00 D4 DC
-03 42 57 32 84 12 B6 DC 00 00 E0 DC 03 42 57 33
-84 12 B6 DC 00 00 F8 DC 3D 41 1A 42 CC 21 28 4E
-08 93 08 20 BA 4F 00 00 A2 53 CC 21 8E 4A 00 00
-3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31
-84 12 F6 DC 00 00 1C DD 03 46 57 32 84 12 F6 DC
-00 00 28 DD 03 46 57 33 84 12 F6 DC 00 00 3E 90
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+E2 C2 22 02 30 41 B2 40 13 00 0E 05 E2 D2 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 E2 C2
+22 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 70 DD
+E6 D6 E6 DE 64 D3 42 D6 B0 D2 AE DE DA DD F8 DD
+68 D4 BC DE 02 DE 00 00 64 DD 5E CE EE DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 3E D6
+6E DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 6E DF 0C 18 B2 40
+3E D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 02 02 B2 D3
+06 02 F2 D0 06 00 24 02 F2 D3 26 02 F2 40 FD 00
+22 02 F2 40 A5 00 A1 01 F2 40 10 00 A0 01 D2 43
+A1 01 B2 40 00 A5 60 01 B2 40 29 01 80 01 B2 40
+0B 00 82 01 B2 40 E9 01 84 01 39 40 00 01 B2 D0
+10 00 86 01 92 D2 5E 01 08 18 38 40 59 14 18 83
+FE 23 19 83 FA 23 39 40 26 00 29 83 B9 40 14 D5
+DA FF FB 23 B2 40 54 C8 E4 FF B2 40 18 00 0A 18
+39 40 00 10 29 83 89 43 00 20 FC 23 31 40 E0 20
+3F 40 80 20 37 40 22 C4 36 40 B4 C4 35 40 00 C4
+34 40 0C C4 B2 40 0A 00 DC 21 B2 43 B4 21 92 C3
+30 01 18 42 08 18 F2 B0 10 00 00 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 00 05 92 42 02 18
+06 05 92 42 04 18 08 05 F2 D0 30 00 0A 02 92 C3
+00 05 92 D3 1A 05 3D 40 0C D6 38 90 0A 00 44 27
+38 90 16 00 41 2F 28 93 1A 23 0F 27 AE D4 92 D3
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A D3 3E DC
+AC DC F2 DB 16 DD B8 DB 3E DD D2 D8 00 00 AE DB
+62 DC 10 DC 50 DC E2 D9 00 00 00 00 4E DD 8E D3
+A4 D1 85 48 49 32 4C 4F 0D 12 87 12 74 C7 BC D1
+0C CC 56 CE 98 D3 1A D6 22 C4 08 D5 04 43 4F 44
+45 00 B0 12 82 CF A2 82 C6 21 0D 12 87 12 74 CF
+AC C5 54 D6 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 D3 0A CF 22 C4 10 D6 03 41 53 4D 92 42
+DA 21 E0 21 B2 40 1E D6 DA 21 E3 3F 76 D6 06 45
+4E 44 41 53 4D 00 92 42 E0 21 DA 21 E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 21 BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 21 B2 43 BE 21 30 40
+B2 D3 00 00 05 4C 4F 32 48 49 A2 83 C6 21 1A 42
+C6 21 EE 3F 5C D6 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C CF 56 CE F8 D6 3D 41 2A 82 82 4A C6 21
+B4 3F 38 40 C0 21 39 48 2A 48 09 5A 1A 52 C4 21
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 21 30 4D 1C 15 87 12 E8 C9 46 CA BA C5 38 D7
+00 CB B0 C5 44 CE 5A D7 3A D7 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 24 D7 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 21 92 53 C4 21
+87 12 E8 C9 00 CB B0 C5 96 D7 8C D7 21 53 3E 90
+10 00 84 2D E2 2B 98 D7 B2 41 C4 21 DE 3F 0D 12
+87 12 20 C6 02 D7 A8 D7 0C 43 1B 42 C6 21 A2 53
+C6 21 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 21 B0 12 24 D7 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 21 A2 53 C6 21 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 21 B0 12 24 D7 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 21 B0 12
+76 D7 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 76 D7
+92 92 C0 21 C4 21 02 24 92 53 C4 21 8E 10 0C 5E
+D8 3F B0 12 76 D7 FA 23 3C 50 10 00 B0 12 5E D7
+EF 3F 0D 12 87 12 20 C6 02 D7 7C D8 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+76 D7 E5 23 3C 50 80 00 B0 12 5E D7 E0 3F 44 C8
+04 52 45 54 49 00 0D 12 87 12 2C C4 00 13 0C CC
+22 C4 2C C4 2C 00 9E D7 72 D8 BC D8 2E 4E 0E DC
+09 4B A5 3F D4 D6 03 4D 4F 56 84 12 B2 D8 00 40
+C6 D8 05 4D 4F 56 2E 42 84 12 B2 D8 40 40 00 00
+03 41 44 44 84 12 B2 D8 00 50 E0 D8 05 41 44 44
+2E 42 84 12 B2 D8 40 50 EC D8 04 41 44 44 43 00
+84 12 B2 D8 00 60 FA D8 06 41 44 44 43 2E 42 00
+84 12 B2 D8 40 60 A0 D8 04 53 55 42 43 00 84 12
+B2 D8 00 70 18 D9 06 53 55 42 43 2E 42 00 84 12
+B2 D8 40 70 26 D9 03 53 55 42 84 12 B2 D8 00 80
+36 D9 05 53 55 42 2E 42 84 12 B2 D8 40 80 B0 D6
+03 43 4D 50 84 12 B2 D8 00 90 50 D9 05 43 4D 50
+2E 42 84 12 B2 D8 40 90 9E D6 04 44 41 44 44 00
+84 12 B2 D8 00 A0 6A D9 06 44 41 44 44 2E 42 00
+84 12 B2 D8 40 A0 5C D9 03 42 49 54 84 12 B2 D8
+00 B0 88 D9 05 42 49 54 2E 42 84 12 B2 D8 40 B0
+94 D9 03 42 49 43 84 12 B2 D8 00 C0 A2 D9 05 42
+49 43 2E 42 84 12 B2 D8 40 C0 AE D9 03 42 49 53
+84 12 B2 D8 00 D0 BC D9 05 42 49 53 2E 42 84 12
+B2 D8 40 D0 00 00 03 58 4F 52 84 12 B2 D8 00 E0
+D6 D9 05 58 4F 52 2E 42 84 12 B2 D8 40 E0 08 D9
+03 41 4E 44 84 12 B2 D8 00 F0 F0 D9 05 41 4E 44
+2E 42 84 12 B2 D8 40 F0 20 C6 9E D7 0E DA 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 42 D9
+03 52 52 43 84 12 08 DA 00 10 20 DA 05 52 52 43
+2E 42 84 12 08 DA 40 10 2C DA 04 53 57 50 42 00
+84 12 08 DA 80 10 3A DA 03 52 52 41 84 12 08 DA
+00 11 48 DA 05 52 52 41 2E 42 84 12 08 DA 40 11
+54 DA 03 53 58 54 84 12 08 DA 80 11 00 00 04 50
+55 53 48 00 84 12 08 DA 00 12 6E DA 06 50 55 53
+48 2E 42 00 84 12 08 DA 40 12 C8 D9 04 43 41 4C
+4C 00 84 12 08 DA 80 12 1A 53 0E 4A 0D 12 87 12
+5E C7 64 C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 CD 20 C6 02 D7 BA DA 0C 43 1B 42 C6 21
+A2 53 C6 21 92 53 C4 21 3E 40 2C 00 1C 15 87 12
+E8 C9 00 CB B0 C5 44 CE DA DA 1B 17 87 12 72 D8
+E2 DA 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 62 DA
+04 52 52 43 4D 00 84 12 B4 DA 50 00 10 DB 04 52
+52 41 4D 00 84 12 B4 DA 50 01 1E DB 04 52 4C 41
+4D 00 84 12 B4 DA 50 02 2C DB 04 52 52 55 4D 00
+84 12 B4 DA 50 03 7C DA 05 50 55 53 48 4D 84 12
+B4 DA 00 15 48 DB 04 50 4F 50 4D 00 84 12 B4 DA
+00 17 85 12 00 3C 3A DB 03 53 3E 3D 85 12 00 38
+68 DB 02 53 3C 00 85 12 00 34 56 DB 03 30 3E 3D
+85 12 00 30 7C DB 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C 90 DB 03 55 3E 3D 85 12
+00 28 86 DB 03 30 3C 3E 85 12 00 24 A4 DB 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 21
+8A 4E 00 00 A2 53 C6 21 0E 4A 30 4D 9A DB 04 54
+48 45 4E 00 1A 42 C6 21 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+78 D9 04 45 4C 53 45 00 1A 42 C6 21 BA 40 00 3C
+00 00 A2 53 C6 21 2F 83 8F 4A 00 00 E3 3F CE DB
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 21
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 21 30 4D FC D9 05 41
+47 41 49 4E 0D 12 87 12 62 DB 16 DC 22 C4 00 00
+05 57 48 49 4C 45 0D 12 87 12 BC DB 70 C4 22 C4
+72 DB 06 52 45 50 45 41 54 00 0D 12 87 12 62 DB
+16 DC D4 DB 22 C4 78 DC 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 21 00 00
+30 4D 8C DA 03 42 57 31 84 12 76 DC E2 21 94 DC
+03 42 57 32 84 12 76 DC E4 21 A0 DC 03 42 57 33
+84 12 76 DC E6 21 B8 DC 3D 41 1A 42 C6 21 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 21 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 B6 DC E8 21 DC DC 03 46 57 32 84 12 B6 DC
+EA 21 E8 DC 03 46 57 33 84 12 B6 DC EC 21 3E 90
 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
-00 08 30 4D 34 DD 04 47 4F 54 4F 00 0D 12 87 12
-A2 DB 60 CE 26 CC 22 C4 00 00 05 3F 47 4F 54 4F
-0D 12 87 12 3E DD 60 CE 26 CC 22 C4 00 00 03 4A
-4D 50 0D 12 87 12 60 CE 84 DC 22 C4 6A DD 04 3F
-4A 4D 50 00 0D 12 87 12 3E DD 60 CE 70 C4 56 DC
-22 C4 42 D1 07 7B 54 4F 4F 4C 53 7D 30 4D A2 D6
-03 41 4E 44 3E FF 30 4D C6 D3 02 2E 53 00 8F 4E
+00 08 30 4D F4 DC 04 47 4F 54 4F 00 0D 12 87 12
+62 DB 34 CE 02 CC 22 C4 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 FE DC 34 CE 02 CC 22 C4 00 00 03 4A
+4D 50 0D 12 87 12 34 CE 44 DC 22 C4 2A DD 04 3F
+4A 4D 50 00 0D 12 87 12 FE DC 34 CE 70 C4 16 DC
+22 C4 40 D1 07 7B 54 4F 4F 4C 53 7D 30 4D 8A D6
+03 41 4E 44 3E FF 30 4D C2 D3 02 2E 53 00 8F 4E
 FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 20 2E 83
 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
-2C C4 3C 00 D2 C8 5E C7 2C C4 08 00 D2 C8 2C C4
-3E 00 D2 C8 08 C9 82 C4 82 C4 8E C5 BA C5 06 DE
+2C C4 3C 00 B0 C8 5E C7 2C C4 08 00 B0 C8 2C C4
+3E 00 B0 C8 EC C8 82 C4 82 C4 8E C5 BA C5 C6 DD
 5A C4 5A C4 22 C4 C0 C5 F8 C5 EA C4 26 C7 2C C4
-02 00 D0 C5 08 DE 22 C4 BA DD 03 2E 52 53 8F 4E
-FE FF 8F 41 FA FF 3E 40 E0 20 D2 3F CA CA 01 3F
-2E 4E 30 40 26 C7 52 D4 03 50 41 44 85 12 E4 20
-0E D5 05 57 4F 52 44 53 0D 12 87 12 84 C9 2C C4
-03 00 1E C9 2C C4 D0 21 EA C4 3C DE 2C C4 10 00
-3C C4 18 C5 F6 D2 2C C4 00 00 3C C4 2C C4 10 00
-3C C4 18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 3C DE
-18 C5 EA C4 A4 C5 B0 C5 98 DE 5A C4 5A C4 F8 C5
-3C C4 3C DE 18 C5 EA C4 2C C4 02 00 D0 C5 7A DE
-4C C4 B0 C5 DA DE 3C C4 2C C4 02 00 20 C5 EA C4
-92 C4 3C DE 18 C5 F2 C4 3C C4 78 CC 2C C4 7F 00
-B4 DD 40 C9 00 C5 2C C4 0F 00 B4 DD 2C C4 10 00
-70 C4 20 C5 1E C9 AC C5 66 DE 5A C4 22 C4 F0 D2
-03 4D 41 58 2E 9F 07 38 2F 53 30 4D E0 DE 03 4D
-49 4E 2E 9F F9 3B 3E 4F 30 4D 04 D2 03 55 2E 52
+02 00 D0 C5 C8 DD 22 C4 7A DD 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 20 D2 3F 42 D0 01 3F
+2E 4E 30 40 26 C7 4E D4 03 50 41 44 85 12 E4 20
+A8 D4 05 57 4F 52 44 53 0D 12 87 12 52 C9 2C C4
+03 00 02 C9 2C C4 CA 21 EA C4 FC DD 2C C4 10 00
+3C C4 18 C5 F2 D2 2C C4 00 00 3C C4 2C C4 10 00
+3C C4 18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 FC DD
+18 C5 EA C4 A4 C5 B0 C5 58 DE 5A C4 5A C4 F8 C5
+3C C4 FC DD 18 C5 EA C4 2C C4 02 00 D0 C5 3A DE
+4C C4 B0 C5 9A DE 3C C4 2C C4 02 00 20 C5 EA C4
+92 C4 FC DD 18 C5 F2 C4 3C C4 54 CC 2C C4 7F 00
+74 DD 24 C9 00 C5 2C C4 0F 00 74 DD 2C C4 10 00
+70 C4 20 C5 02 C9 AC C5 26 DE 5A C4 22 C4 EC D2
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D A0 DE 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D2 03 55 2E 52
 0D 12 87 12 A8 C4 42 C6 2C C4 00 00 A2 C6 D4 C6
-F0 C6 B4 C4 82 C4 20 C5 2C C4 00 00 E4 DE 1E C9
-40 C9 22 C4 D4 D3 04 44 55 4D 50 00 0D 12 12 12
-E2 21 B2 40 10 00 E2 21 2E 5F 87 12 70 C4 82 C4
+F0 C6 B4 C4 82 C4 20 C5 2C C4 00 00 A4 DE 02 C9
+24 C9 22 C4 D0 D3 04 44 55 4D 50 00 0D 12 12 12
+DC 21 B2 40 10 00 DC 21 2E 5F 87 12 70 C4 82 C4
 82 C4 26 C7 2C C4 01 00 20 C5 26 C7 2C C4 FE FF
-B4 DD C0 C5 84 C9 F8 C5 2C C4 07 00 00 DF 08 C9
+74 DD C0 C5 52 C9 F8 C5 2C C4 07 00 C0 DE EC C8
 F8 C5 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5
-2C C4 03 00 00 DF E2 C5 6C DF 08 C9 08 C9 F8 C5
+2C C4 03 00 C0 DE E2 C5 2C DF EC C8 EC C8 F8 C5
 2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4
-7E 00 F2 DE 20 C6 E4 DE D2 C8 E2 C5 8A DF 2C C4
-10 00 D0 C5 54 DF B4 C4 2C C6 F2 C4 22 C4
+7E 00 B2 DE 20 C6 A4 DE B0 C8 E2 C5 4A DF 2C C4
+10 00 D0 C5 14 DF B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-26 D5
+14 D5
 q
similarity index 99%
rename from Target.inc
rename to Device.inc
index d75906d..ab7c555 100644 (file)
@@ -138,3 +138,5 @@ UCB1_SD
     .ENDIF
 
 
+
+
index 3db1920..de1c12c 100644 (file)
Binary files a/FastForth.fr.odt and b/FastForth.fr.odt differ
index 5fc766d..2f16196 100644 (file)
Binary files a/FastForth.fr.pdf and b/FastForth.fr.pdf differ
index 5aba8bc..818885b 100644 (file)
Binary files a/FastForth.odt and b/FastForth.odt differ
index 0c0cc17..970cc97 100644 (file)
Binary files a/FastForth.pdf and b/FastForth.pdf differ
index d15f4d4..d0869d7 100644 (file)
@@ -1,22 +1,22 @@
 
 FORTH vocabulary
 ----------------
-COLD            WARM            (WARM)          WIPE            RST_HERE        PWR_HERE        RST_STATE       
-PWR_STATE       MOVE            LEAVE           +LOOP           LOOP            DO              REPEAT          
-WHILE           AGAIN           UNTIL           BEGIN           THEN            ELSE            IF              
+COLD            WARM            WIPE            RST_HERE        PWR_HERE        RST_STATE       PWR_STATE       
+MOVE            LEAVE           +LOOP           LOOP            DO              REPEAT          WHILE           
+AGAIN           UNTIL           BEGIN           THEN            ELSE            IF              >BODY           
 DEFER           DOES>           CREATE          CONSTANT        VARIABLE        :               ;               
 POSTPONE        RECURSE         IMMEDIATE       IS              [']             ]               [               
 \               '               ABORT"          ABORT           QUIT            EVALUATE        COUNT           
 LITERAL         ,               EXECUTE         >NUMBER         FIND            WORD            ."              
-S"              CR              (CR)            TYPE            SPACES          SPACE           NOECHO          
-ECHO            EMIT            (EMIT)          ACCEPT          KEY             (KEY)           C,              
-ALLOT           HERE            .               D.              U.              SIGN            HOLD            
-#>              #S              #               UM/MOD          <#              STATE           BASE            
-BL              J               I               UNLOOP          U<              0>              >               
-<               =               0<              0=              DABS            1-              1+              
-1-              1+              -               +               C!              C@              !               
-@               DEPTH           R@              R>              >R              ROT             OVER            
-SWAP            NIP             DROP            ?DUP            DUP             LIT             EXIT
+S"              CR              TYPE            SPACES          SPACE           NOECHO          ECHO            
+EMIT            ACCEPT          KEY             C,              ALLOT           HERE            .               
+D.              U.              SIGN            HOLD            #>              #S              #               
+UM/MOD          <#              STATE           BASE            BL              J               I               
+UNLOOP          U<              0>              >               <               =               0<              
+0=              DABS            1-              1+              1-              1+              -               
++               C!              C@              !               @               DEPTH           R@              
+R>              >R              ROT             OVER            SWAP            NIP             DROP            
+?DUP            DUP             LIT             EXIT
 
 
 ASSEMBLER vocabulary
@@ -31,8 +31,7 @@ RRA.B           RRA             SWPB            RRC.B           RRC
 XOR.B           XOR             BIS.B           BIS             BIC.B           BIC             BIT.B           
 BIT             DADD.B          DADD            CMP.B           CMP             SUB.B           SUB             
 SUBC.B          SUBC            ADDC.B          ADDC            ADD.B           ADD             MOV.B           
-MOV             RETI            LO2HI           COLON           ENDASM          ENDCODE         (SLEEP)         
-SLEEP
+MOV             RETI            LO2HI           COLON           ENDASM          ENDCODE         SLEEP
 
 ASM             CODE            HI2LO           (added in forth vocabulary)
 
@@ -49,7 +48,7 @@ DEFINITIONS     ONLY            PREVIOUS        ALSO            ASSEMBLER
 
 ANS_COMPLEMENT ADD-ON
 ---------------------
-PAD             >BODY           SOURCE          .(              (               DECIMAL         HEX             
+PAD             SOURCE          .(              (               DECIMAL         HEX             
 FILL            [CHAR]          CHAR            +!              MIN             MAX             2/              
 2*              RSHIFT          LSHIFT          XOR             OR              AND             INVERT          
 2OVER           2SWAP           2DROP           2DUP            2!              2@              S>D             
@@ -60,7 +59,7 @@ M*              UM*             {ANS_COMP}
 
 SD_CARD_LOADER ADD-ON
 ---------------------
-LOAD"           CIB             (ACCEPT)        {SD_LOAD}
+LOAD"           CIB
 
 
 SD_CARD_READ_WRITE ADD-ON
@@ -69,9 +68,17 @@ TERM2SD"        SD_EMIT         WRITE           READ            CLOSE
 READ"
 
 
-UTILITY ADD-ON
---------------
-DUMP            U.R             WORDS           ?               .RS             .S              {TOOLS}       
+SD_CARD_READ_WRITE ADD-ON
+-------------------------
+TERM2SD"        SD_EMIT         WRITE           READ            CLOSE           DEL"            WRITE"          
+READ"
+
+
+UTILITY BOOTLOADER
+------------------
+BOOT
+
+QUIT becomes a DEFERed word
 
 
 SD_TOOLS ADD-ON
@@ -80,7 +87,6 @@ DIR             FAT             CLUSTER         SECTOR          {SD_TOOLS}
 
 
 ; a word within brackets [] is an immediate word. (other words may also be immediate)
-; a word doubled with another word between parentheses () is a DEFERred word, the first being initialised with the second.
 ; when ADD-ONs are compiled into the kernel, their respective MARKER word identified with braces {} does nothing.
 ; when ADD-ONs are downloaded, their respective MARKER word identified with braces {} removes all ADD-ONs words.
 
@@ -89,9 +95,7 @@ FORTH WORDS
 
 COLD            Software reset
 
-WARM            DEFERed word, initially executes (WARM)
-
-(WARM)          performs a hot start
+WARM            DEFERed word, performs a hot start
 
 WIPE            resets the program memory to its original state (Deep_RST has same effect).
 
@@ -148,16 +152,12 @@ S"              https://forth-standard.org/standard/core/Sq
 TYPE            https://forth-standard.org/standard/core/TYPE
 SPACES          https://forth-standard.org/standard/core/SPACES
 SPACE           https://forth-standard.org/standard/core/SPACE
-CR              DEFERed word, initially executes (CR)
-(CR)            https://forth-standard.org/standard/core/CR
+CR              DEFERed word, https://forth-standard.org/standard/core/CR
 NOECHO          stop display on output 
 ECHO            start display on output
-EMIT            DEFERed word, initially executes (EMIT)
-(EMIT)          https://forth-standard.org/standard/core/EMIT
-ACCEPT          DEFERed word, initially executes (ACCEPT)
-(ACCEPT)        https://forth-standard.org/standard/core/ACCEPT
-KEY             DEFERed word, initially executes (KEY)
-(KEY)           https://forth-standard.org/standard/core/KEY
+EMIT            DEFERed word, https://forth-standard.org/standard/core/EMIT
+ACCEPT          DEFERed word, https://forth-standard.org/standard/core/ACCEPT
+KEY             DEFERed word, https://forth-standard.org/standard/core/KEY
 C,              https://forth-standard.org/standard/core/CComma
 ALLOT           https://forth-standard.org/standard/core/ALLOT
 HERE            https://forth-standard.org/standard/core/HERE
@@ -251,16 +251,23 @@ LO2HI           switches compilation between low level and high level modes with
 COLON           pushes IP then performs LO2HI, used as: CODE <word> ... assembler instr ... COLON ... FORTH words ... ;
 ENDASM          to end an ASM definition.
 ENDCODE         to end a CODE definition.
-SLEEP           DEFERed word which enables to create a background task, initially executes (SLEEP).
-(SLEEP)         the default SLEEP definition: MOV #GIE+LPM0,SR
+SLEEP           DEFERed word which enables to create a background task, default SLEEP definition: MOV #GIE+LPM0,SR
+
+next assembler words are set in FORTH vocabulary:
 
-next assembler words are in FORTH vocabulary:
+CODE <word>     creates a word written in assembler.
+                this defined <word> must be ended with ENDCODE unless COLON or LO2HI use.
 
-CODE <word>     creates a FORTH word written in assembler.
-                this defined <word> must be ended with ENDCODE.
+DFRCODE <word>  creates a DEFERed word with its default execute part ready to be written in assembler.
+                this defined <word> must be ended with ENDCODE unless COLON or LO2HI use.
+                if we write: DFRCODE truc
+                             COLON ;
+                we obtain same as: DEFER truc
+                                   :NONAME ; IS truc
 
 ASM <word>      creates a word written in assembler but not interpretable by FORTH (because ended by RET instr.).
-                this defined <word> must be ended with ENDASM. This word will be called only in assembler mode. 
+                this defined <word> must be ended with ENDASM. 
+                This word will be recognized only in assembler mode. 
 
 HI2LO           used to switch compilation from high level (FORTH) to low level (assembler).
 
@@ -271,8 +278,8 @@ RRUM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=218
 RLAM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=208
 RRAM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=211
 RRCM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=214
-POPM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=204    syntax: POPM X,S    to pop X,W,T,S
-PUSHM           http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=205    syntax: PUSHM S,X   to push S,T,W,X
+POPM            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=204
+PUSHM           http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=205
 
 CALL            http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=142
 PUSH.B  PUSH    http://www.ti.com/lit/ug/slau272d/slau272d.pdf#page=168
@@ -368,10 +375,9 @@ UM*             https://forth-standard.org/standard/core/UMTimes
 SD_CARD_LOADER ADD-ON
 ---------------------
 LOAD"           LOAD" SD_TEST.4TH" loads and compile source file SD_TEST.4TH.
-CIB             Currrent Input Buffer
-(ACCEPT)        init value for ACCEPT
-{SD_LOAD}
+CIB             Currrent Input Buffer, TIB by default.
 
+ACCEPT becomes a DEFERed word
 
 SD_CARD_READ_WRITE ADD-ON
 -------------------------
index 0194e14..c2af146 100644 (file)
@@ -2,9 +2,29 @@
 ; ANS_COMP.f                               words complement to pass CORETEST.4th
 ; ------------------------------------------------------------------------------
 
-\ TARGET SELECTION
+\ TARGET SELECTION (used by preprocessor GEMA to load \config\gema\TARGET.pat)
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR2433  MSP_EXP430FR4133    MSP_EXP430FR2355    CHIPSTICK_FR2433
+\ MY_MSP430FR5738_1 MY_MSP430FR5738     MY_MSP430FR5948     MY_MSP430FR5948_1   
+\ JMJ_BOX
+
+\ REGISTERS USAGE
+\ rDODOES to rEXIT must be saved before use and restored after
+\ scratch registers Y to S are free for use
+\ under interrupt, IP is free for use
+
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT, rDOVAR, rDOCON, rDODOES
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+\
+\ POPM  order :  rDODOES, rDOCON, rDOVAR, rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ example : POPM #6,IP   pulls Y,X,W,T,S,IP registers from return stack
+
+\ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
+
+\ ASSEMBLER conditionnal usage with IF UNTIL WHILE  S<  S>=  U<   U>=  0=  0<>  0>=
+
+\ ASSEMBLER conditionnal usage with ?JMP ?GOTO      S<  S>=  U<   U>=  0=  0<>  <0
+
     \
 PWR_STATE
     \
@@ -12,7 +32,7 @@ PWR_STATE
     \
 [UNDEFINED] ASM [IF]
 ECHO 
-ASM ; assembler is required! 
+ASM \ assembler is required! 
 [THEN]
     \
 [UNDEFINED] {ANS_COMP} [IF]
@@ -140,11 +160,12 @@ S< IF
     XOR #-1,TOS     \ n2 --> u2 
     ADD #1,TOS      \
 THEN
-PUSHM IP,S          \ UMSTAR use S,T,W,X,Y
+\ PUSHM IP,S          \ UMSTAR use S,T,W,X,Y
+PUSHM #2,IP         \ UMSTAR use S,T,W,X,Y
 LO2HI               \ -- ud1 u2
 UM*       
 HI2LO
-POPM S,IP
+POPM #2,IP           \ pop S,IP
 CMP #0,S            \ sign of result > -1 ?
 S< IF
     XOR #-1,0(PSP)  \ ud --> d
@@ -178,6 +199,8 @@ ENDCODE
 [THEN]
     \
 
+HERE
+
 \ https://forth-standard.org/standard/core/SMDivREM
 \ SM/REM   d1lo d1hi n2 -- r3 q4  symmetric signed div
 CODE SM/REM
@@ -195,11 +218,13 @@ S< IF               \
     ADD #1,2(PSP)   \           d1lo+1
     ADDC #0,0(PSP)  \           d1hi+C
 THEN                \ -- uDVDlo uDVDhi uDIVlo
-PUSHM IP,T          \           save IP,S,T
+\ PUSHM IP,T          \           save IP,S,T
+PUSHM #3,IP         \           save IP,S,T
 LO2HI
     UM/MOD          \ -- uREMlo uQUOTlo
 HI2LO
-POPM T,IP           \           restore T,S,IP
+\ POPM T,IP           \           restore T,S,IP
+POPM #3,IP          \           restore T,S,IP
 CMP #0,T            \           T=rem_sign
 S< IF
     XOR #-1,0(PSP)
@@ -217,6 +242,8 @@ MOV @IP+,PC
 ENDCODE
     \
 
+HERE OVER - DUMP
+
 \ https://forth-standard.org/standard/core/NEGATE
 \ C NEGATE   x1 -- x2            two's complement
 CODE NEGATE
@@ -526,14 +553,6 @@ MOV @IP+,PC
 ENDCODE
     \
 
-\ https://forth-standard.org/standard/core/toBODY
-\ >BODY     -- PFA      leave PFA of created word
-CODE >BODY
-ADD #4,TOS
-MOV @IP+,PC
-ENDCODE
-    \
-
 \ https://forth-standard.org/standard/core/toIN
 \ C >IN     -- a-addr       holds offset in input stream
 TOIN CONSTANT >IN
@@ -542,12 +561,13 @@ TOIN CONSTANT >IN
 [UNDEFINED] PAD [IF]
 
 \ https://forth-standard.org/standard/core/PAD
-\  PAD           --  pad address
+\  PAD           --  addr
 PAD_ORG CONSTANT PAD
 
 [THEN]
 
     \
 RST_HERE
+[THEN]
+
     \
-ECHO 
diff --git a/MSP430-FORTH/CHNGBAUD.f b/MSP430-FORTH/CHNGBAUD.f
new file mode 100644 (file)
index 0000000..e343605
--- /dev/null
@@ -0,0 +1,81 @@
+\ CHNGBAUD.f
+
+\ TARGET SELECTION
+\ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
+\ MSP_EXP430FR4133  MSP_EXP430FR2433    MSP_EXP430FR2355    CHIPSTICK_FR2433
+
+
+: BAD_MHz
+    1 ABORT"  only for 8,16,24 MHz! "
+;
+
+: CHNGBAUD                  \ only for 8, 16, 24 MHz
+    PWR_STATE               \ to skip created words (garbage collector)
+    ECHO CR
+    ."    choose your baudrate:" CR
+    ."    0 --> 5 MBds" CR
+    ."    1 --> 921600 Bds" CR
+    ."    2 --> 115200 Bds" CR
+    ."    other --> abort, your choice: "
+    KEY
+
+    FREQ_KHZ @  >R      \ target MCLCK frequency --> RSP 
+
+    48 - ?DUP 0=                \ select 5MBds ?
+    IF  ." 5 MBds"              \ add this to the current line
+        R@ 8000 =               \ 8MHz ?
+        IF 1 ABORT"  with MCLK=8MHz? don't dream! "
+        THEN                    \ no return attempted...
+        R@ 16000 =              \ 16MHz ?
+        IF  3                   \ UCAxBRW value for TERMBRW_RST
+            $2100               \ UCAxMCTLW value for TERMMCTLW_RST
+        ELSE R@ 24000 =         \ 24 MHz ?
+            IF  4
+                $EE00
+            ELSE BAD_MHz        \ add your MCLCK value here...
+            THEN
+        THEN
+        
+    ELSE 1 - ?DUP 0=            \ select 921600 ?
+        IF  ." 921600 Bds"
+            R@ 8000 =
+            IF  8
+                $D600
+            ELSE R@ 16000 =
+                IF  $11
+                    $4A00
+                ELSE R@ 24000 =
+                    IF 
+                        1
+                        $00A1
+                    ELSE BAD_MHz
+                    THEN
+                THEN
+            THEN
+        ELSE 1 - ?DUP 0=        \ select 115200 ?
+            IF  ." 115200 Bds"
+                R@ 8000  =
+                IF  4
+                    $5551 
+                ELSE R@ 16000 =
+                    IF  8
+                        $F7A1
+                    ELSE R@ 24000 =
+                        IF  $0D
+                            $4901 
+                        ELSE BAD_MHz
+                        THEN
+                    THEN
+                THEN
+            ELSE                \ other selected 
+                ." abort" CR ABORT
+            THEN
+        THEN
+    THEN
+    TERMMCTLW_RST !             \ set UCAxMCTLW value in FRAM
+    TERMBRW_RST !               \ set UCAxBRW value in FRAM
+    R> DROP                     \ reset RSP and PSP
+    CR ."    Change baudrate in Teraterm, save its setup then reboot."
+;
+    \
+CHNGBAUD
index 1213ca2..979110a 100644 (file)
@@ -1071,16 +1071,24 @@ TESTING INPUT: ACCEPT
 
 CREATE ABUF 80 CHARS ALLOT
 
+[DEFINED] LOAD" [IF]
+: (ACCEPT)
+    ['] ACCEPT >BODY EXECUTE
+;
 : ACCEPT-TEST
     CR ." PLEASE TYPE UP TO 80 CHARACTERS:" CR
-[DEFINED] LOAD" [IF]
     ABUF 80 (ACCEPT)                \ JMT: because ACCEPT is deferred
+    CR ." RECEIVED: " [CHAR] " EMIT
+    ABUF SWAP TYPE [CHAR] " EMIT CR
+;
 [ELSE]
+: ACCEPT-TEST
+    CR ." PLEASE TYPE UP TO 80 CHARACTERS:" CR
     ABUF 80 ACCEPT
-[THEN]      \ LOAD"
     CR ." RECEIVED: " [CHAR] " EMIT
     ABUF SWAP TYPE [CHAR] " EMIT CR
 ;
+[THEN]      \ LOAD"
 
 
 T{ ACCEPT-TEST -> }T
index c5c29ad..49c2627 100644 (file)
@@ -2,6 +2,8 @@
 \ TARGET SELECTION
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR4133  MSP_EXP430FR2433    MSP_EXP430FR2355    CHIPSTICK_FR2433
+\ MY_MSP430FR5738_1 MY_MSP430FR5738     MY_MSP430FR5948     MY_MSP430FR5948_1   
+\ JMJ_BOX
 
 
 \ Fast Forth For Texas Instrument MSP430FRxxxx FRAM devices
 \ scratch registers Y to S are free for use
 \ under interrupt, IP is free for use
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT, rDOVAR, rDOCON, rDODOES
-\ example : PUSHM IP,Y
-\
-\ POPM  order :  rDODOES, rDOCON, rDOVAR, rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
-
 \ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
 
 \ ASSEMBLER conditionnal usage with IF UNTIL WHILE  S<  S>=  U<   U>=  0=  0<>  0>=
@@ -306,7 +302,8 @@ THEN
         ADD #1,TOS
 THEN
 \ UDM*
-            PUSHM R5,R4     \ 6 save R5 ~ R4 regs
+\            PUSHM R5,R4     \ 6 save R5 ~ R4 regs
+            PUSHM #2,R5      \ 6 save R5,R4 regs
             MOV 4(PSP),Y    \ 3 MDlo
             MOV 2(PSP),T    \ 3 MDhi
             MOV @PSP+,W     \ 2 MRlo        -- d1lo d1hi +n2
@@ -324,7 +321,8 @@ BEGIN       BIT X,W         \ 1 test actual bit
             ADDC R4,R4      \ 1 (RLA LSBs) MDLO *2
             ADD X,X         \ 1 (RLA) NEXT BIT TO TEST
 U>= UNTIL   MOV R5,W        \ 1 IF BIT IN CARRY: FINISHED    32 * 16~ (average loop)
-            POPM R4,R5      \ 6 restore R4 ~ R5 regs
+\            POPM R4,R5      \ 6 restore R4 ~ R5 regs
+            POPM #2,R5      \ 6 restore R4 R5 regs
 \ UDM*END
     MOV TOS,T               \
     MOV @PSP,TOS            \
index bac41f0..1a658f0 100644 (file)
@@ -1,6 +1,29 @@
 \ TARGET SELECTION
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR2433  MSP_EXP430FR4133    MSP_EXP430FR2355    CHIPSTICK_FR2433
+\ MY_MSP430FR5738_1 MY_MSP430FR5738     MY_MSP430FR5948     MY_MSP430FR5948_1   
+\ JMJ_BOX
+
+\ REGISTERS USAGE
+\ rDODOES to rEXIT must be saved before use and restored after
+\ scratch registers Y to S are free for use
+\ under interrupt, IP is free for use
+
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+\
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
+
+\ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
+
+\ ASSEMBLER conditionnal usage with IF UNTIL WHILE  S<  S>=  U<   U>=  0=  0<>  0>=
+
+\ ASSEMBLER conditionnal usage with ?JMP ?GOTO      S<  S>=  U<   U>=  0=  0<>  <0
 
 
 PWR_STATE
@@ -50,22 +73,30 @@ CODE F-                     \ substract Q15.16 numbers
 ENDCODE
     \
 
+
+\ HERE
+
+
+$1A04 C@ $EF > [IF] ; test tag value MSP430FR413x subfamily without hardware_MPY 
+    \
+
+
 CODE F/                     \ Q15.16 / Q15.16 --> Q15.16 result
         MOV 2(PSP),S        \
-        XOR TOS,S           \ MDhi XOR MRhi --> S keep sign of result
+        XOR TOS,S           \ DVDhi XOR DVRhi --> S keep sign of result
         MOV #0,T            \ DVDlo = 0
         MOV 4(PSP),Y        \ DVDlo --> DVDhi
         MOV 2(PSP),X        \ DVDhi --> REMlo
-        BIT #8000,X         \ MD < 0 ? 
-0<> IF  XOR #-1,Y           \ lo
-        XOR #-1,X           \ hi
-        ADD #1,Y            \ lo
-        ADDC #0,X           \ hi
-THEN    BIT #8000,TOS
-0<> IF  XOR #-1,0(PSP)
-        XOR #-1,TOS
-        ADD #1,0(PSP)
-        ADDC #0,TOS
+        BIT #8000,X         \ DVD < 0 ? 
+0<> IF  XOR #-1,Y           \ INV(DVDlo)
+        XOR #-1,X           \ INV(DVDhi)
+        ADD #1,Y            \ INV(DVDlo)+1
+        ADDC #0,X           \ INV(DVDhi)+C
+THEN    BIT #8000,TOS       \ DVR < 0 ?
+0<> IF  XOR #-1,0(PSP)      \ INV(DVRlo)
+        XOR #-1,TOS         \ INV(DVRhi)
+        ADD #1,0(PSP)       \ INV(DVRlo)+1
+        ADDC #0,TOS         \ INV(DVRhi)+C
 THEN
 \ don't uncomment lines below !
 \ ------------------------------------------------------------------------
@@ -74,15 +105,16 @@ THEN
 \           MOV 4(PSP),T    \ DVDlo
 \           MOV 2(PSP),Y    \ DVDhi
 \           MOV #0,X        \ REMlo = 0
-            PUSHM R7,R4
+\            PUSHM R7,R4
+            PUSHM #4,R7
             MOV #0,W        \  REMhi = 0
-            MOV @PSP,R6     \  DIVlo
+            MOV @PSP,R6     \  DVRlo
             MOV #32,R5      \  init loop count
-BW1         CMP TOS,W       \ 1 REMhi = DIVhi ?
-    0= IF   CMP R6,X        \ 1 REMlo U< DIVlo ?
+BW1         CMP TOS,W       \ 1 REMhi = DVRhi ?
+    0= IF   CMP R6,X        \ 1 REMlo U< DVRlo ?
     THEN
-    U>= IF  SUB R6,X        \ 1 no:  REMlo - DIVlo  (carry is set)
-            SUBC TOS,W      \ 1      REMhi - DIVhi
+    U>= IF  SUB R6,X        \ 1 no:  REMlo - DVRlo  (carry is set)
+            SUBC TOS,W      \ 1      REMhi - DVRhi
     THEN
 BW2         ADDC R7,R7      \ 1 RLC quotLO
             ADDC R4,R4      \ 1 RLC quotHI
@@ -93,8 +125,8 @@ BW2         ADDC R7,R7      \ 1 RLC quotLO
             ADDC X,X        \ 1 RLC REMlo
             ADDC W,W        \ 1 RLC REMhi
             U< ?GOTO BW1    \ 2 15~ loop 
-            SUB R6,X        \ 1 REMlo - DIVlo
-            SUBC TOS,W      \ 1 REMhi - DIVhi
+            SUB R6,X        \ 1 REMlo - DVRlo
+            SUBC TOS,W      \ 1 REMhi - DVRhi
             BIS #1,SR       \ 1
             GOTO BW2        \ 2 16~ loop
 FW1
@@ -104,20 +136,17 @@ FW1
 
             MOV R7,0(PSP)   \ QUOTlo
             MOV R4,TOS      \ QUOThi
-            POPM R4,R7      \ restore R7 to R4
+            POPM #4,R7      \ restore R4 to R7
 \           MOV @IP+,PC     \ end of UD/MOD
 \ ------------------------------------------------------------------------
-BW1     AND #-1,S           \ clear V, set N
-S< IF   XOR #-1,0(PSP)
-        XOR #-1,TOS
-        ADD #1,0(PSP)
-        ADDC #0,TOS
+BW1     AND #-1,S           \ clear V, set N; QUOT < 0 ?
+S< IF   XOR #-1,0(PSP)      \ INV(QUOTlo)
+        XOR #-1,TOS         \ INV(QUOThi)
+        ADD #1,0(PSP)       \ INV(QUOTlo)+1
+        ADDC #0,TOS         \ INV(QUOThi)+C
 THEN    MOV @IP+,PC
 ENDCODE
-    \
-
-$1A04 C@ $EF > [IF] ; test tag value MSP430FR413x subfamily without hardware_MPY 
-    \
+    \ 
 
 \ F#S    Qhi Qlo -- Qhi 0   convert fractional part Qlo of Q15.16 fixed point number
 CODE F#S 
@@ -128,7 +157,9 @@ CODE F#S
             MOV #4,TOS              \ -- Qhi Qlo x      TOS = limit for base 16
             CMP #10,&BASE
 0= IF       ADD #1,TOS              \                   TOS = limit for base 10
-THEN        PUSHM TOS,IP            \
+THEN        
+\            PUSHM TOS,IP            \
+            PUSHM #2,TOS            \                   save TOS,IP
             MOV #0,S                \ -- Qhi Qlo x
 BEGIN       PUSH S                  \                   R-- limit IP count
             MOV &BASE,TOS           \ -- Qhi Qlo base
@@ -143,7 +174,8 @@ BEGIN       PUSH S                  \                   R-- limit IP count
             MOV.B TOS,HOLDS_ORG(S)  \ -- Qhi RESlo char     char to string
             ADD #1,S                \                       count+1
             CMP 2(RSP),S            \                       count=limit ?
-U>= UNTIL   POPM IP,TOS             \
+U>= UNTIL   
+            POPM #2,TOS             \                       restore IP,TOS
             MOV #0,0(PSP)           \ -- Qhi 0 len
             SUB #2,PSP              \ -- Qhi 0 x len
             MOV #HOLDS_ORG,0(PSP)   \ -- Qhi 0 addr len
@@ -155,7 +187,8 @@ ENDCODE
 \ don't use S reg (keep sign)
 CODE UDM*
             PUSH IP         \ 3
-            PUSHM R7,R4     \ 6 save R7 ~ R4 regs
+\            PUSHM R7,R4     \ 6 save R7 ~ R4 regs
+            PUSHM #4,R7     \ 6 save R7 ~ R4 regs
             MOV 4(PSP),IP   \ 3 MDlo
             MOV 2(PSP),T    \ 3 MDhi
             MOV @PSP,W      \ 2 MRlo
@@ -183,7 +216,7 @@ BEGIN       CMP #0,X
             ADDC Y,Y        \ 1 (RLA) NEXT BIT TO TEST
 U>= UNTIL   MOV R6,0(PSP)   \ 2 IF BIT IN CARRY: FINISHED    32 * 16~ (average loop)
             MOV R7,TOS      \ 1 high result in TOS
-            POPM R4,R7      \ 6 restore R4 ~ R7 regs
+            POPM #4,R7      \ 6 restore R4 to R7
             MOV @RSP+,IP    \ 2
             MOV @IP+,PC
 ENDCODE
@@ -211,6 +244,74 @@ ENDCODE
 [ELSE]                  \ hardware multiplier
     \
 
+CODE F/                     \ Q15.16 / Q15.16 --> Q15.16 result
+        MOV 2(PSP),S        \
+        XOR TOS,S           \ DVDhi XOR DVRhi --> S keep sign of result
+        MOV #0,T            \ DVDlo = 0
+        MOV 4(PSP),Y        \ DVDlo --> DVDhi
+        MOV 2(PSP),X        \ DVDhi --> REMlo
+        BIT #8000,X         \ DVD < 0 ? 
+0<> IF  XOR #-1,Y           \ INV(DVDlo)
+        XOR #-1,X           \ INV(DVDhi)
+        ADD #1,Y            \ INV(DVDlo)+1
+        ADDC #0,X           \ INV(DVDhi)+C
+THEN    BIT #8000,TOS       \ DVR < 0 ?
+0<> IF  XOR #-1,0(PSP)      \ INV(DVRlo)
+        XOR #-1,TOS         \ INV(DVRhi)
+        ADD #1,0(PSP)       \ INV(DVRlo)+1
+        ADDC #0,TOS         \ INV(DVRhi)+C
+THEN
+\ don't uncomment lines below !
+\ ------------------------------------------------------------------------
+\           UD/MOD    DVDlo DVDhi DVRlo DVRhi -- REMlo REMhi QUOTlo QUOThi
+\ ------------------------------------------------------------------------
+\           MOV 4(PSP),T    \ DVDlo
+\           MOV 2(PSP),Y    \ DVDhi
+\           MOV #0,X        \ REMlo = 0
+\            PUSHM R7,R4     \ PUSHM R7 to 4
+            PUSHM #4,R7     \ PUSHM R7 to R4
+            MOV #0,W        \  REMhi = 0
+            MOV @PSP,R6     \  DVRlo
+            MOV #32,R5      \  init loop count
+BW1         CMP TOS,W       \ 1 REMhi = DVRhi ?
+    0= IF   CMP R6,X        \ 1 REMlo U< DVRlo ?
+    THEN
+    U>= IF  SUB R6,X        \ 1 no:  REMlo - DVRlo  (carry is set)
+            SUBC TOS,W      \ 1      REMhi - DVRhi
+    THEN
+BW2         ADDC R7,R7      \ 1 RLC quotLO
+            ADDC R4,R4      \ 1 RLC quotHI
+            SUB #1,R5       \ 1 Decrement loop counter
+            0< ?GOTO FW1    \ 2 out of loop if count<0    
+            ADD T,T         \ 1 RLA DVDlo
+            ADDC Y,Y        \ 1 RLC DVDhi
+            ADDC X,X        \ 1 RLC REMlo
+            ADDC W,W        \ 1 RLC REMhi
+            U< ?GOTO BW1    \ 2 15~ loop 
+            SUB R6,X        \ 1 REMlo - DVRlo
+            SUBC TOS,W      \ 1 REMhi - DVRhi
+            BIS #1,SR       \ 1
+            GOTO BW2        \ 2 16~ loop
+FW1
+\           MOV X,4(PSP)    \ REMlo    
+\           MOV W,2(PSP)    \ REMhi
+            ADD #4,PSP      \ skip REMlo REMhi
+
+            MOV R7,0(PSP)   \ QUOTlo
+            MOV R4,TOS      \ QUOThi
+            POPM #4,R7      \ restore R4 to R7
+\           MOV @IP+,PC     \ end of UD/MOD
+\ ------------------------------------------------------------------------
+        AND #-1,S           \ clear V, set N; QUOT < 0 ?
+S< IF   XOR #-1,0(PSP)      \ INV(QUOTlo)
+        XOR #-1,TOS         \ INV(QUOThi)
+        ADD #1,0(PSP)       \ INV(QUOTlo)+1
+        ADDC #0,TOS         \ INV(QUOThi)+C
+THEN    MOV @IP+,PC
+ENDCODE
+    \
+
+
 \ F#S    Qhi Qlo -- Qhi 0   convert fractionnal part of Q15.16 fixed point number (direct order)
 CODE F#S
             MOV @PSP,X              \ -- Qlo Qhi    X = Qlo
@@ -277,7 +378,6 @@ ENDCODE
     \
 
 [UNDEFINED] 2CONSTANT [IF]
-    \
 
 \ https://forth-standard.org/standard/core/TwoFetch
 \ 2@    a-addr -- x1 x2    fetch 2 cells ; the lower address will appear on top of stack
@@ -296,26 +396,29 @@ CREATE
 DOES>
 2@              \ execution part
 ;
+
+[THEN] \of [UNDEFINED] 2CONSTANT [IF]
+
     \
 
-[THEN]
+[THEN] \ of [UNDEFINED] {FIXPOINT}
     \
 
-ECHO
 PWR_HERE
-    \
 
 ; -----------------------
 ; (volatile) tests
 ; -----------------------
+
+    \
 3,14159 2CONSTANT PI
 PI -1,0 F* 2CONSTANT -PI
     \
-PI 2,0 F/ F.  
 PI 2,0 F* F.  
-PI -2,0 F/ F.
 PI -2,0 F* F.
--PI 2,0 F/ F.
 -PI 2,0 F* F.
--PI -2,0 F/ F.
 -PI -2,0 F* F.
+PI 2,0 F/ F.  
+PI -2,0 F/ F.
+-PI 2,0 F/ F.
+-PI -2,0 F/ F.
diff --git a/MSP430-FORTH/LAST.4th b/MSP430-FORTH/LAST.4th
deleted file mode 100644 (file)
index cd71c99..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-
-[DEFINED] {TOOLS} [IF] {TOOLS} [THEN]
-
-[UNDEFINED] {TOOLS} [IF]
-
-MARKER {TOOLS} 
-
-[UNDEFINED] ? [IF]
-CODE ?          
-    MOV @R14,R14
-    MOV #U.,R0
-ENDCODE
-[THEN]
-
-[UNDEFINED] .S [IF]
-CODE .S
-    MOV     R14,-2(R15)
-    MOV     R15,R14
-    SUB     #2,R14
-    MOV     R14,-6(R15)
-    MOV     #$1C80,R14
-    SUB     #2,R14
-BW1 MOV     R14,-4(R15)
-    SUB     #6,R15
-    SUB     @R15,R14
-    RRA     R14
-COLON
-    $3C EMIT
-    .
-    $08 EMIT
-    $3E EMIT SPACE
-    OVER OVER >
-    0= IF 
-        DROP DROP EXIT
-    THEN
-    DO 
-        I @ U.
-    2 +LOOP
-;
-[THEN]
-
-[UNDEFINED] .RS [IF]
-CODE .RS
-    MOV     R14,-2(R15)
-    MOV     R1,-6(R15)
-    MOV     #$1CE0,R14
-    GOTO    BW1
-ENDCODE
-[THEN]
-
-[UNDEFINED] WORDS [IF]
-
-[UNDEFINED] AND [IF]
-
-CODE AND
-AND @R15+,R14
-MOV @R13+,R0
-ENDCODE
-
-[THEN]
-
-[UNDEFINED] PAD [IF]
-
-$1CE4 CONSTANT PAD
-
-[THEN]
-
-: WORDS
-CR ."    "
-$1DD0 @
-    PAD $1800 @ DUP +
-    MOVE
-    BEGIN
-        0.
-        $1800 @ DUP + 0
-            DO
-            DUP I PAD + @
-                U< IF
-                    DROP DROP
-                    I DUP PAD + @
-                THEN
-            2 +LOOP
-        ?DUP
-    WHILE
-        DUP
-        2 - @
-        ROT
-        PAD +
-        !
-        DUP
-        COUNT $7F AND
-        TYPE
-        C@ $0F AND
-        $10 SWAP - SPACES
-    REPEAT
-    DROP
-;
-[THEN]
-
-[UNDEFINED] MAX [IF]
-    CODE MAX
-        CMP @R15,R14
-        S< ?GOTO FW1
-    BW1 ADD #2,R15
-        MOV @R13+,R0
-    ENDCODE
-
-    CODE MIN
-        CMP @R15,R14
-        S< ?GOTO BW1
-    FW1 MOV @R15+,R14
-        MOV @R13+,R0
-    ENDCODE
-[THEN]
-
-[UNDEFINED] U.R [IF]
-: U.R
->R  <# 0 # #S #>  
-R> OVER - 0 MAX SPACES TYPE
-;
-[THEN]
-
-[UNDEFINED] DUMP [IF]
-CODE DUMP
-PUSH R13
-PUSH &BASE
-MOV #$10,&BASE
-ADD @R15,R14
-LO2HI
-  SWAP OVER OVER
-  U. U.
-  $FFF0 AND
-  DO  CR
-    I 7 U.R SPACE
-      I $10 + I
-      DO I C@ 3 U.R LOOP  
-      SPACE SPACE
-      I $10 + I
-      DO I C@ $7E MIN BL MAX EMIT LOOP
-  $10 +LOOP
-  R> BASE !
-;
-[THEN]
-
-[THEN]
-
-ECHO
-
-PWR_HERE
-
-: BS 8 EMIT ;
-
-: ESC #27 EMIT ;
-
-: specs
-PWR_STATE
-6 0 DO BS LOOP
-ESC ." [7m"
-." FastForth "
-$1800 @ U. ." Threads "
-$1804 @ 0 1000 UM/MOD U. BS ." ," U. ." MHz "
-$1806 @ 0 10 UM/MOD U. BS ." ," U. ." kBds "
-$FF30 HERE - U. ." bytes free"
-ESC ." [0m"
-;
-
-specs
\ No newline at end of file
index 106690e..8ee82e3 100644 (file)
@@ -1,13 +1,12 @@
-; --------------------------------------------------------------
-; prog100k.4th, compile 100 kbytes, to test speed of compilation
-; --------------------------------------------------------------
+; -----------------------------------
+; PROG100k.f = 110 x RC5toLCD.4th
+; -----------------------------------
+
 \ TARGET SELECTION
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
-\ MSP_EXP430FR4133  MSP_EXP430FR2355    CHIPSTICK_FR2433
-
-\ MY_MSP430FR5738_1 MY_MSP430FR5738     MY_MSP430FR5948     MY_MSP430FR5948_1   
-\ JMJ_BOX
+\ MSP_EXP430FR2355
 
+    \
 \ Copyright (C) <2016>  <J.M. THOORENS>
 \
 \ This program is free software: you can redistribute it and/or modify
 \ R4 to R7 must be saved before use and restored after
 \ scratch registers Y to S are free for use
 \ under interrupt, IP is free for use
+\ interrupts reset SR register !
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4
-\ example : PUSHM IP,Y
-\
-\ POPM  order :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
 
-\ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+\
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
 
-\ ASSEMBLER conditionnal usage with IF UNTIL WHILE  S<  S>=  U<   U>=  0=  0<>  0>=
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
 
-\ ASSEMBLER conditionnal usage with ?JMP ?GOTO      S<  S>=  U<   U>=  0=  0<>  <0
+\ ASSEMBLER conditionnal usage after IF UNTIL WHILE : S< S>= U< U>= 0= 0<> 0>=
+\ ASSEMBLER conditionnal usage before ?JMP ?GOTO    : S< S>= U< U>= 0= 0<> 0< 
 
+\ FORTH conditionnal    : 0= 0< = < > U<
 
 \ display on a LCD 2x20 CHAR the code sent by an IR remote under philips RC5 protocol
 \ target : any TI MSP-EXP430FRxxxx launchpad (FRAM)
@@ -59,7 +61,7 @@
 \        LCDVo current consumption ~ 500 uA.
 
 \ ===================================================================================
-\ notice : adjust TA0EX0,TB0CTL,TB0EX0 and 20_us to the target frequency if <> 8MHz !
+\ notice : adjust WDT_TIM_EX0,LCD_TIM_CTL,LCD_TIM_EX0 and 20_us to the target frequency if <> 8MHz !
 \ ===================================================================================
 
 
@@ -73,7 +75,7 @@
 \              / \ 1N4148   |
 \              ---          |
 \          100n |    2k2    |
-\ TB0.2 >---||--+--^/\/\/v--+---->  3 LCD_Vo (= 0V6 without modulation)
+\ LCD_TIM_.2 >---||--+--^/\/\/v--+---->  3 LCD_Vo (= 0V6 without modulation)
 \       ------------------------->  4 LCD_RW
 \       ------------------------->  5 LCD_RW
 \       ------------------------->  6 LCD_EN
 
 \ rc5   <--- OUT IR_Receiver (1 TSOP32236)
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
 
-PWR_STATE
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
     \
-[DEFINED] ASM [IF]
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
     \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -186,279 +208,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -466,85 +513,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -603,279 +694,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -883,85 +999,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -1020,279 +1180,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -1300,85 +1485,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -1437,279 +1666,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -1717,85 +1971,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -1854,279 +2152,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -2134,85 +2457,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -2271,279 +2638,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -2551,85 +2943,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -2688,279 +3124,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -2968,85 +3429,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -3105,279 +3610,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -3385,85 +3915,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -3522,279 +4096,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -3802,85 +4401,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -3939,279 +4582,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -4219,85 +4887,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -4356,279 +5068,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -4636,85 +5373,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -4773,279 +5554,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -5053,85 +5859,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -5190,279 +6040,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -5470,85 +6345,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -5607,279 +6526,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -5887,85 +6831,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -6024,279 +7012,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -6304,85 +7317,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -6441,279 +7498,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -6721,85 +7803,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -6858,365 +7984,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -7275,279 +8470,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -7555,85 +8775,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -7692,279 +8956,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -7972,85 +9261,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -8109,279 +9442,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -8389,85 +9747,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -8526,279 +9928,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -8806,85 +10233,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -8943,279 +10414,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -9223,85 +10719,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -9360,279 +10900,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -9640,85 +11205,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -9777,279 +11386,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -10057,86 +11691,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -10194,279 +11872,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -10474,85 +12177,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -10611,279 +12358,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -10891,85 +12663,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -11028,279 +12844,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -11308,85 +13149,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -11445,279 +13330,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -11725,85 +13635,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -11862,365 +13816,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -12279,279 +14302,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -12559,85 +14607,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -12696,279 +14788,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -12976,85 +15093,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -13113,279 +15274,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -13393,85 +15579,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -13530,279 +15760,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -13810,85 +16065,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -13947,279 +16246,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -14227,85 +16551,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -14364,279 +16732,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -14644,85 +17037,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -14781,279 +17218,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -15061,86 +17523,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -15198,279 +17704,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -15478,85 +18009,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -15615,279 +18190,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -15895,85 +18495,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -16032,279 +18676,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -16312,85 +18981,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -16449,279 +19162,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -16729,85 +19467,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -16866,365 +19648,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -17283,279 +20134,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -17563,85 +20439,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -17700,279 +20620,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -17980,85 +20925,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -18117,279 +21106,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -18397,85 +21411,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -18534,279 +21592,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -18814,85 +21897,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -18951,279 +22078,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -19231,85 +22383,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -19368,279 +22564,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -19648,85 +22869,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -19785,279 +23050,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -20065,86 +23355,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -20202,279 +23536,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -20482,85 +23841,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -20619,279 +24022,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -20899,85 +24327,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -21036,279 +24508,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -21316,85 +24813,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -21453,279 +24994,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -21733,85 +25299,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -21870,365 +25480,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -22287,279 +25966,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -22567,85 +26271,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -22704,279 +26452,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -22984,85 +26757,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -23121,279 +26938,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -23401,85 +27243,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -23538,279 +27424,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -23818,85 +27729,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -23955,279 +27910,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -24235,85 +28215,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -24372,279 +28396,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -24652,85 +28701,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -24789,279 +28882,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -25069,86 +29187,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -25206,279 +29368,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -25486,85 +29673,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -25623,279 +29854,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -25903,85 +30159,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -26040,279 +30340,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -26320,85 +30645,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -26457,279 +30826,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -26737,85 +31131,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -26874,365 +31312,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -27291,279 +31798,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -27571,85 +32103,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -27708,279 +32284,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -27988,85 +32589,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -28125,279 +32770,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -28405,85 +33075,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -28542,279 +33256,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -28822,85 +33561,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -28959,279 +33742,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -29239,85 +34047,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -29376,279 +34228,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -29656,85 +34533,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -29793,279 +34714,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -30073,86 +35019,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -30210,279 +35200,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -30490,85 +35505,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -30627,279 +35686,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -30907,85 +35991,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -31044,279 +36172,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -31324,85 +36477,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -31461,279 +36658,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -31741,85 +36963,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -31878,365 +37144,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -32295,279 +37630,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -32575,85 +37935,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -32712,279 +38116,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -32992,85 +38421,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -33129,279 +38602,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -33409,85 +38907,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -33546,279 +39088,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -33826,85 +39393,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -33963,279 +39574,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -34243,85 +39879,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -34380,279 +40060,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -34660,85 +40365,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -34797,279 +40546,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -35077,86 +40851,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -35214,279 +41032,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -35494,85 +41337,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -35631,279 +41518,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -35911,85 +41823,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -36048,279 +42004,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -36328,85 +42309,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -36465,279 +42490,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -36745,85 +42795,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -36882,365 +42976,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -37299,279 +43462,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -37579,85 +43767,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -37716,279 +43948,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -37996,85 +44253,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -38133,279 +44434,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -38413,85 +44739,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -38550,279 +44920,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -38830,85 +45225,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -38967,279 +45406,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
-LO2HI                           \ switch from assembler to FORTH
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
+LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -39247,85 +45711,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -39384,279 +45892,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -39664,85 +46197,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -39801,279 +46378,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -40081,86 +46683,130 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
-ENDCODE
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
+ENDCODE
     \
 
 CODE TOP_LCD                    \ LCD Sample
@@ -40218,279 +46864,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -40498,85 +47169,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -40635,279 +47350,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -40915,85 +47655,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -41052,279 +47836,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -41332,85 +48141,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -41469,279 +48322,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -41749,85 +48627,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -41886,365 +48808,434 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
 \ ------------------------------\
-\ define LPM mode for ACCEPT    \
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
 \ ------------------------------\
-\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
+\ ------------------------------\
+\ define LPM mode for ACCEPT    \
+\ ------------------------------\
+\    MOV #LPM4,&LPM_MODE         \ with MSP430FR59xx
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -42303,279 +49294,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -42583,85 +49599,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -42720,279 +49780,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -43000,85 +50085,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -43137,279 +50266,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-\     JMP LCD_R
-\ ENDCODE
-\     \
-
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -43417,85 +50571,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
 
-PWR_STATE   ;
 
 
+
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -43554,279 +50752,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -43834,85 +51057,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -43971,279 +51238,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -44251,85 +51543,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -44388,279 +51724,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -44668,85 +52029,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
 
-PWR_STATE   ;
 
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
+
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -44805,279 +52210,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
 \ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
-\ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -45085,85 +52515,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
+
 
-PWR_STATE   ;
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
 
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -45222,279 +52696,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -45502,85 +53001,129 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
+ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
+
 
-PWR_STATE   ;
 
+[DEFINED] {RC5TOLCD} [IF] {RC5TOLCD} [THEN]     \ remove application
 
+[DEFINED] ASM [IF]      \ security test
+    \
+MARKER {RC5TOLCD}
+    \
+[UNDEFINED] MAX [IF]    \ MAX and MIN are defined in {ANS_COMP}
+    \
 CODE MAX    \    n1 n2 -- n3       signed maximum
-            CMP     @PSP,TOS    \ n2-n1
-            S<      ?GOTO FW1   \ n2<n1
-BW1         ADD     #2,PSP
-            MOV     @IP+,PC
+    CMP @PSP,TOS    \ n2-n1
+    S<  ?GOTO FW1   \ n2<n1
+BW1 ADD #2,PSP
+    MOV @IP+,PC
 ENDCODE
     \
 
 CODE MIN    \    n1 n2 -- n3       signed minimum
-            CMP     @PSP,TOS     \ n2-n1
-            S<      ?GOTO BW1    \ n2<n1
-FW1         MOV     @PSP+,TOS
-            MOV     @IP+,PC
+    CMP @PSP,TOS     \ n2-n1
+    S<  ?GOTO BW1    \ n2<n1
+FW1 MOV @PSP+,TOS
+    MOV @IP+,PC
 ENDCODE
+
+[THEN]
     \
 
+[UNDEFINED] U.R [IF]        \ defined in {UTILITY}
 : U.R                       \ u n --           display u unsigned in n width (n >= 2)
   >R  <# 0 # #S #>  
   R> OVER - 0 MAX SPACES TYPE
 ;
+[THEN]
     \
 
-CODE 20_US                      \ n --      n * 20 us
-BEGIN                           \ 3 cycles loop + 6~  
-\    MOV     #5,W                \ 3 MCLK = 1 MHz
-\    MOV     #23,W               \ 3 MCLK = 4 MHz
-    MOV     #51,W               \ 3 MCLK = 8 MHz
-\    MOV     #104,W              \ 3 MCLK = 16 MHz
-\    MOV     #158,W              \ 3 MCLK = 24 MHz
-    BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
-        SUB #1,W                \ 1
-    0= UNTIL                    \ 2
-    SUB     #1,TOS              \ 1
-0= UNTIL                        \ 2
-    MOV     @PSP+,TOS           \ 2
-    MOV     @IP+,PC             \ 4
+\ CODE 20_US                      \ n --      n * 20 us
+\ BEGIN                           \ 3 cycles loop + 6~  
+\ \    MOV     #5,W                \ 3 MCLK = 1 MHz
+\ \    MOV     #23,W               \ 3 MCLK = 4 MHz
+\ \    MOV     #51,W               \ 3 MCLK = 8 MHz
+\     MOV     #104,W              \ 3 MCLK = 16 MHz
+\ \    MOV     #158,W              \ 3 MCLK = 24 MHz
+\     BEGIN                       \ 3 cycles loop ==> 3 * W / F us = 100 us - 1 @ 8 MHz
+\         SUB #1,W                \ 1
+\     0= UNTIL                    \ 2
+\     SUB     #1,TOS              \ 1
+\ 0= UNTIL                        \ 2
+\     MOV     @PSP+,TOS           \ 2
+\     MOV     @IP+,PC             \ 4
+\ ENDCODE
+\     \
+
+CODE 20_US                  \ n --      n * 20 us
+BEGIN                       \ here we presume that LCD_TIM_IFG = 1...
+    BEGIN
+        BIT #1,&LCD_TIM_CTL      \ 3
+    0<> UNTIL               \ 2         loop until LCD_TIM_IFG set
+    BIC #1,&LCD_TIM_CTL          \ 3         clear LCD_TIM_IFG
+    SUB #1,TOS              \ 1
+U< UNTIL                    \ 2 ...so add a dummy loop with U< instead of 0=
+MOV @PSP+,TOS               \ 2
+MOV @IP+,PC                 \ 4
 ENDCODE
     \
 
@@ -45639,279 +53182,304 @@ ENDCODE
 ;
     \
 
-\ : LCD_Entry_set       $04 OR LCD_WrF ;
-
-\ : LCD_Display_Ctrl    $08 OR LCD_WrF ;
-
-\ : LCD_Display_Shift   $10 OR LCD_WrF ;
-
-\ : LCD_Fn_Set          $20 OR LCD_WrF ;
-
-\ : LCD_CGRAM_Set       $40 OR LCD_WrF ;
-
-\ : LCD_Goto            $80 OR LCD_WrF ;
-
-\ CODE LCD_R                      \ -- byte       read byte from LCD
-\     BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
-\     BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
-\ COLON                           \ starts a FORTH word
-\     TOP_LCD 2 20_us             \ -- %0000HHHH
-\     TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
-\ HI2LO                           \ switch from FORTH to assembler
-\     RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
-\     ADD.B @PSP+,TOS             \ -- %HHHHLLLL
-\     MOV @RSP+,IP                \ restore IP saved by COLON
-\     MOV @IP+,PC                 \
-\ ENDCODE
-\     \
+[UNDEFINED] OR [IF]
+    \
+\ https://forth-standard.org/standard/core/OR
+\ C OR     x1 x2 -- x3           logical OR
+CODE OR
+BIS @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
 
-\ CODE LCD_RdS                    \ -- status       Read Status
-\     BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
-\     JMP LCD_R
-\ ENDCODE
-\     \
+[THEN]
+    \
+: LCD_Entry_set     $04 OR LCD_WrF ;
+    \
+: LCD_DSP_Ctrl      $08 OR LCD_WrF ;
+    \
+: LCD_DSP_Shift     $10 OR LCD_WrF ;
+    \
+: LCD_Fn_Set        $20 OR LCD_WrF ;
+    \
+: LCD_CGRAM_Set     $40 OR LCD_WrF ;
+    \
+: LCD_Goto          $80 OR LCD_WrF ;
+    \
+CODE LCD_R                      \ -- byte       read byte from LCD
+    BIC.B #LCD_DB,&LCD_DB_DIR   \ LCD_Data as intput
+    BIS.B #LCD_RW,&LCD_CMD_OUT  \ lcd_rw=1
+COLON                           \ starts a FORTH word
+    TOP_LCD 2 20_us             \ -- %0000HHHH
+    TOP_LCD 2 20_us             \ -- %0000HHHH %0000LLLL
+HI2LO                           \ switch from FORTH to assembler
+    RLAM #4,0(PSP)              \ -- %HHHH0000 %0000LLLL
+    ADD.B @PSP+,TOS             \ -- %HHHHLLLL
+    MOV @RSP+,IP                \ restore IP saved by COLON
+    MOV @IP+,PC                 \
+ENDCODE
+    \
 
-\ CODE LCD_RdC                    \ -- char         Read Char
-\     BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
-    JMP LCD_R
-ENDCODE
-    \
+CODE LCD_RdS                    \ -- status       Read Status
+    BIC.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=0
+    JMP LCD_R
+ENDCODE
+    \
 
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ SR(low byte) | SCG1 | SCG0 |OSCOFF|CPUOFF||GIE| N | Z | C | current |
-\ -------------+------+------+------+------++---+---+---+---+---------+
-\ LPM0 = $18  |  0   |  0   |  0   |  1   || 1 | x | x | x |  180uA  | default mode
-\ LPM1 = $58  |  0   |  1   |  0   |  1   || 1 | x | x | x |         | same mode as LPM0
-\ LPM2 = $98  |  1   |  0   |  0   |  1   || 1 | x | x | x |   60uA  |
-\ LPM3 = $D8  |  1   |  1   |  0   |  1   || 1 | x | x | x |   10uA  | 32768Hz XTAL is running
-\ LPM4 = $F8  |  1   |  1   |  1   |  1   || 1 | x | x | x |    6uA  |
-\ -------------+------+------+------+------++---+---+---+---+---------+
+CODE LCD_RdC                    \ -- char         Read Char
+    BIS.B #LCD_RS,&LCD_CMD_OUT  \ lcd_rs=1
+    JMP LCD_R
+ENDCODE
+    \
 
 
 \ ******************************\
 ASM WDT_INT                     \ Watchdog interrupt routine, warning : not FORTH executable !
 \ ******************************\
-BIC #$F8,0(RSP)                \ set CPU ON and GIE OFF in retiSR to force fall down to LPM mode
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
+\ XOR.B #LED1,&LED1_OUT           \ to visualise WDT
 BIT.B #SW2,&SW2_IN              \ test switch S2
 0= IF                           \ case of switch S2 pressed
-    CMP #38,&TB0CCR2            \ maxi Ton = 34/40 & VDD=3V6 ==> LCD_Vo = -2V2
+    CMP #19,&LCD_TIM_CCR2       \ maxi Ton = 19/20 & VDD=3V6 ==> LCD_Vo = -1V4
     U< IF
-        ADD #1,&TB0CCR2         \ action for switch S2 (P2.5) : 78 mV / increment
+        ADD #1,&LCD_TIM_CCR2    \ action for switch S2 (P2.5) : 150 mV / increment
     THEN
 ELSE
     BIT.B #SW1,&SW1_IN          \ test switch S1 input
     0= IF                       \ case of Switch S1 pressed
-        CMP #7,&TB0CCR2         \ mini Ton = 6/40 & VDD=3V6 ==> LCD_Vo = 0V
+        CMP #3,&LCD_TIM_CCR2    \ mini Ton = 3/20 & VDD=3V6 ==> LCD_Vo = 0V
         U>= IF                  \
-            SUB #1,&TB0CCR2     \ action for switch S1 (P2.6) : -78 mV / decrement
+           SUB #1,&LCD_TIM_CCR2 \ action for switch S1 (P2.6) : -150 mV / decrement
         THEN                    \
     THEN                        \
 THEN                            \
-RETI                            \ CPU is ON, GIE is OFF
-ENDASM                          \
+BW1                             \ from quit on truncated RC5 message
+BW2                             \ from repeated RC5 command
+BW3                             \ from end of RC5_INT
+BIC #$78,0(RSP)                 \ 4  SCG0,OSCOFF,CPUOFF and GIE are OFF in retiSR to force LPM0_LOOP despite pending interrupt
+RETI                            \ 5
+ENDASM
     \
 
-
-\ ------------------------------\
-\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
 \ ******************************\
 ASM RC5_INT                     \   wake up on Px.RC5 change interrupt
 \ ******************************\
+\ IR_RC5 driver                 \ IP,S,T,W,X,Y registers are free for use
+\ ******************************\
 \                               \ in :  SR(9)=old Toggle bit memory (ADD on)
 \                               \       SMclock = 8|16|24 MHz
-\                               \ use : BASE,TOS,IP,W,X,Y, TA0 timer, TA0R register
-\                               \ out : TOS = 0 C6 C5 C4 C3 C2 C1 C0
+\                               \ use : T,W,X,Y, RC5_TIM_ timer, RC5_TIM_R register
+\                               \ out : X = 0 C6 C5 C4 C3 C2 C1 C0
 \                               \       SR(9)=new Toggle bit memory (ADD on)
-\ ------------------------------\
-BIC     #$F8,0(RSP)            \ CPU is ON and GIE is OFF in retiSR to force fall down to LPM0_LOOP
-\ ------------------------------\
-\ define LPM mode for ACCEPT    \
-\ ------------------------------\
-\ MOV #LPM4,&LPM_MODE             \ with MSP430FR59xx
-\ MOV #LPM2,&LPM_MODE             \ with MSP430FR57xx, terminal input don't work for LPMx > 2
-\                                 \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
-\ ------------------------------\
+\ ******************************\
 \ RC5_FirstStartBitHalfCycle:   \
-\ ------------------------------\
-MOV     #0,&TA0EX0              \ predivide by 1 in TA0EX0 register ( 8 MHZ), reset value
-\ MOV     #1,&TA0EX0              \ predivide by 2 in TA0EX0 register (16 MHZ)
-\ MOV     #2,&TA0EX0              \ predivide by 3 in TA0EX0 register (24 MHZ)
-MOV     #1778,X                 \ RC5_Period in us
-MOV     #14,W                   \ count of loop
+\ ******************************\                division in RC5_TIM_CTL (SMCLK/1|SMCLK/1|SMCLK/2|SMCLK/4|SMCLK/8)
+\ MOV #0,&RC5_TIM_EX0           \ predivide by 1 in RC5_TIM_EX0 register ( 125kHz|  1MHz |  2MHZ |  4MHZ |  8MHZ ), reset value
+  MOV #1,&RC5_TIM_EX0           \ predivide by 2 in RC5_TIM_EX0 register ( 250kHZ|  2MHz |  4MHZ |  8MHZ | 16MHZ )
+\ MOV #2,&RC5_TIM_EX0           \ predivide by 3 in RC5_TIM_EX0 register ( 375kHz|  3MHz |  6MHZ | 12MHZ | 24MHZ )
+\ MOV #3,&RC5_TIM_EX0           \ predivide by 4 in RC5_TIM_EX0 register ( 500kHZ|  4MHz |  8MHZ | 16MHZ )
+\ MOV #4,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 625kHz|  5MHz | 10MHZ | 20MHZ )
+\ MOV #5,&RC5_TIM_EX0           \ predivide by 6 in RC5_TIM_EX0 register ( 750kHz|  6MHz | 12MHZ | 24MHZ )
+\ MOV #6,&RC5_TIM_EX0           \ predivide by 7 in RC5_TIM_EX0 register ( 875kHz|  7MHz | 14MHZ | 28MHZ )
+\ MOV #7,&RC5_TIM_EX0           \ predivide by 8 in RC5_TIM_EX0 register (  1MHz |  8MHz | 16MHZ | 32MHZ )
+MOV #1778,X                     \ RC5_Period * 1us
+\ MOV #222,X                    \ RC5_Period * 8us (SMCLK/1 and first column above)
+MOV #14,W                       \ count of loop
 BEGIN                           \
-\ ------------------------------\
-\ RC5_TopSynchro:               \ <--- loop back ---+ with readjusted RC5_Period
-\ ------------------------------\                   | here, we are just after 1/2 RC5_cycle
-    MOV #%1011100100,&TA0CTL   \ (re)start timer_A | SMCLK/8 : 1us time interval,free running,clear TA0_IFG and TA0R
+\ ******************************\
+\ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
+\ ******************************\                   |
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
-    MOV     X,Y                 \ Y=1/2             ^
+    MOV     X,Y                 \                   ^
     RRUM    #1,Y                \ Y=1/4
-    ADD     X,Y                 \ Y=3/4
-\ RC5_Wait_1_1/4                \ wait 3/4 cycle after 1/2 cycle to sample RC5_Input at 1/4 cycle+1
-    BEGIN   CMP Y,&TA0R         \ CMP &TA0R with 3/4 cycle value 
-    0= UNTIL                    \
-\ ------------------------------\
-\ RC5_Sample:                   \ at 5/4 cycle, we can sample RC5_input, ST2/C6 bit first
-\ ------------------------------\
+    ADD     X,Y                 \ Y=3/4 cycle
+    BEGIN   CMP Y,&RC5_TIM_R    \ 3 wait 1/2 + 3/4 cycle = n+1/4 cycles 
+    U>= UNTIL                   \ 2
+\ ******************************\
+\ RC5_SampleOnFirstQuarter      \ at n+1/4 cycles, we sample RC5_input, ST2/C6 bit first
+\ ******************************\
     BIT.B   #RC5,&IR_IN         \ C_flag = IR bit
-    ADDC    IP,IP               \ C_flag <-- IP(15):IP(0) <-- C_flag
-    MOV     &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
+    ADDC    T,T                 \ C_flag <-- T(15):T(0) <-- C_flag
+    MOV.B   &IR_IN,&IR_IES      \ preset Px_IES.y state for next IFG
     BIC.B   #RC5,&IR_IFG        \ clear Px_IFG.y after 4/4 cycle pin change
     SUB     #1,W                \ decrement count loop
-\                               \  count = 13 ==> IP = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
-\                               \  count = 0  ==> IP = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
+\                               \  count = 13 ==> T = x  x  x  x  x  x  x  x |x  x  x  x  x  x  x /C6
+\                               \  count = 0  ==> T = x  x /C6 Tg A4 A3 A2 A1|A0 C5 C4 C3 C2 C1 C0  1 
 0<> WHILE                       \ ----> out of loop ----+
-\ RC5_compute_7/4_Time_out:     \                       |
-    ADD     X,Y                 \                       |   out of bound = 7/4 period 
-\ RC5_WaitHalfCycleP1.2_IFG:    \                       |
+    ADD X,Y                     \                       |   Y = n+3/4 cycles = time out because n+1/2 cycles edge is always present
     BEGIN                       \                       |
-        CMP     Y,&TA0R         \                       |   TA0R = 5/4 cycle test
-        0>= IF                  \                       |   if cycle time out of bound
-            BIC  #$30,&TA0CTL  \                       |   stop timer_A0
-            RETI                \                       |   then quit to do nothing
-        THEN                    \                       |
-\ ------------------------------\                       |
-        BIT.B   #RC5,&IR_IFG    \                   ^   |   test P1.2_IFG
-    0<> UNTIL                   \                   |   |
-    MOV     &TA0R,X             \                   |   |   get new RC5_period value 
-REPEAT                          \ ----> loop back --+   |
-\ ------------------------------\                       |
+        MOV &RC5_TIM_R,X        \ 3                     |   X grows from n+1/4 up to n+3/4 cycles
+        CMP Y,X                 \ 1                     |   cycle time out of bound ?
+        U>= IF                  \ 2                 ^   |   yes:
+        BIC #$30,&RC5_TIM_CTL   \                   |   |      stop timer
+        GOTO BW1                \                   |   |      quit on truncated RC5 message
+        THEN                    \                   |   |
+        BIT.B #RC5,&IR_IFG      \ 3                 |   |   n+1/2 cycles edge is always present
+    0<> UNTIL                   \ 2                 |   |
+REPEAT                          \ ----> loop back --+   |   with X = new RC5_period value
+\ ******************************\                       |
 \ RC5_SampleEndOf:              \ <---------------------+
-\ ------------------------------\
-BIC     #$30,&TA0CTL           \ stop timer_A0
-RLAM    #1,IP                   \ IP =  x /C6 Tg A4 A3 A2|A1 A0 C5 C4 C3 C2 C1 C0  1  0
-\ ******************************\
-\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
 \ ******************************\
-MOV     @RSP,X                  \ retiSR(9)  = old UF9 = old RC5 toggle bit
-RLAM    #4,X                    \ retiSR(11,10,9)= X(11,10,9) --> X(15,14,13)
-XOR     IP,X                    \ (new XOR old) Toggle bit (13)
-BIT     #BIT13,X                \ X(13) = New_RC5_command
-0= IF RETI                      \ case of repeated RC5_command : RETI without SR(9) change
-THEN                            \
-XOR     #UF9,0(RSP)             \ change Toggle bit memory, UserFlag1 = SR(9) = 1
+BIC #$30,&RC5_TIM_CTL           \   stop timer
 \ ******************************\
 \ RC5_ComputeNewRC5word         \
 \ ******************************\
-SUB     #4,PSP                  \
-MOV     &BASE,2(PSP)            \ save variable BASE before use
-MOV     TOS,0(PSP)              \ save TOS before use
-MOV.B   IP,TOS                  \ TOS = C5 C4 C3 C2 C1 C0  0  0
-RRUM    #2,TOS                  \ TOS =  0  0 C5 C4 C3 C2 C1 C0
+RLAM    #1,T                    \ T =  x /C6 Tg A4 A3 A2 A1 A0|C5 C4 C3 C2 C1 C0  1  0
+MOV.B   T,X                     \ X = C5 C4 C3 C2 C1 C0  1  0
+RRUM    #2,X                    \ X =  0  0 C5 C4 C3 C2 C1 C0
 \ ******************************\
 \ RC5_ComputeC6bit              \
 \ ******************************\
-BIT     #$4000,IP              \ test /C6 bit in IP
-0= IF   BIS #$40,TOS           \ set C6 bit in S
-THEN                            \ TOS =  0  C6 C5 C4 C3 C2 C1 C0
+BIT     #BIT14,T                \ test /C6 bit in T
+0= IF   BIS #BIT6,X             \ set C6 bit in X
+THEN                            \ X =  0  C6 C5 C4 C3 C2 C1 C0
 \ ******************************\
-\ RC5_CommandByteIsDone         \ RC5_code --
+\ RC5_CommandByteIsDone         \ -- BASE RC5_code
 \ ******************************\
-
-\ ------------------------------\
-\ Display IR_RC5 code           \
-\ ------------------------------\
-\ BIS.B #LED1,&LED1_OUT           \ switch ON LED1, comment if no LED
-\ ------------------------------\
+\ Only New_RC5_Command ADD_ON   \ use SR(9) bit as toggle bit
+\ ******************************\
+RRUM    #3,T                    \ new toggle bit = T(13) ==> T(10)
+XOR     @RSP,T                  \ (new XOR old) Toggle bits
+BIT     #UF10,T                 \ repeated RC5_command ?
+0= ?GOTO BW2                    \ yes, RETI without UF10 change and without action !
+XOR #UF10,0(RSP)                \ 5 toggle bit memory
+\ ******************************\
+\ Display IR_RC5 code           \ X = RC5 code
+\ ******************************\
+SUB #4,PSP                      \
+MOV &BASE,2(PSP)                \ save current base
+MOV #$10,&BASE                  \ set hex base
+MOV TOS,0(PSP)                  \ save TOS
+MOV X,TOS                       \
 LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
-    $10 BASE !                 \ change BASE to hexadecimal
-    CR ." $" 2 U.R             \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    CR ." $" 2 U.R              \ print IR_RC5 code
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
+MOV TOS,&BASE                   \ restore current BASE
+MOV @PSP+,TOS                   \
+\ ******************************\
+GOTO BW3
+\ ******************************\
+ENDASM
+    \ 
+
 \ ------------------------------\
-\ BIC.B #LED1,&LED1_OUT           \ switch OFF LED1, comment if no LED
+ASM BACKGROUND                  \ 
 \ ------------------------------\
-MOV @PSP+,&BASE                 \ restore variable BASE
-RETI                            \ CPU is ON, GIE is OFF
+\ ...                           \ insert here your background task
+\ ...                           \
+\ ...                           \
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
-    \ 
+\ ------------------------------\
+    \
 
 CODE START                      \
 \ ------------------------------\
-\ TB0CTL = %0000 0010 1001 0100\$3C0
-\               - -             \CNTL Counter lentgh \ 00 = 16 bits
-\                   --          \TBSSEL TimerB clock select \ 10 = SMCLK
-\                      --       \ID input divider \ 10 = /4
-\                        --     \MC Mode Control \ 01 = up to TB0CCR0
-\                            -  \TBCLR TimerB Clear
-\                             - \TBIE
-\                              -\TBIFG
-\ --------------------------------\\
-\ TB0CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
-\              --                 \CM Capture Mode
-\                --               \CCIS
-\                   -             \SCS
-\                    --           \CLLD
-\                      -          \CAP
-\                        ---      \OUTMOD \ 011 = set/reset
-\                           -     \CCIE
-\                             -   \CCI
-\                              -  \OUT
-\                               - \COV
-\                                -\CCIFG
-\ TB0CCRx                         \$3D{2,4,6,8,A,C,E}
-\ TB0EX0                          \$3E0 
-\ ------------------------------\
-\ set TimerB to make 50kHz PWM  \
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #0,&TB0EX0             \ predivide by 1 in TB0EX0 register (1 MHZ) (25 kHz PWM)
-\ ------------------------------\
-\    MOV #%1000010100,&TB0CTL  \ SMCLK/1, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (4 MHZ)
-\ ------------------------------\
-    MOV #%1010010100,&TB0CTL   \ SMCLK/4, up mode, clear timer, no int
-    MOV #0,&TB0EX0              \ predivide by 1 in TB0EX0 register (8 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #1,&TB0EX0             \ predivide by 2 in TB0EX0 register (16 MHZ)
-\ ------------------------------\
-\    MOV #%1010010100,&TB0CTL  \ SMCLK/4, up mode, clear timer, no int
-\    MOV #2,&TB0EX0             \ predivide by 3 in TB0EX0 register (24 MHZ)
-\ ------------------------------\
-    MOV #40,&TB0CCR0            \ 40*0.5us=20us (40us @ 1MHz)
-\ ------------------------------\
-\ set TimerB to generate PWM for LCD_Vo
-\ ------------------------------\
-    MOV #%1100000,&TB0CCTL2    \ output mode = set/reset \ clear CCIFG
-\    MOV #20,&TB0CCR2           \ contrast adjust : 20/40 ==> LCD_Vo = -1V1|+3V6 (Vcc=3V6)
-    MOV #25,&TB0CCR2            \ contrast adjust : 25/40 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
+\ LCD_TIM_CTL =  %0000 0010 1001 0100\$3C0
+\                    - -             \CNTL Counter lentgh \ 00 = 16 bits
+\                        --          \TBSSEL TimerB clock select \ 10 = SMCLK
+\                           --       \ID input divider \ 10 = /4
+\                             --     \MC Mode Control \ 01 = up to LCD_TIM_CCR0
+\                                 -  \TBCLR TimerB Clear
+\                                  - \TBIE
+\                                   -\TBIFG
+\ -------------------------------\
+\ LCD_TIM_CCTLx = %0000 0000 0110 0000\$3C{2,4,6,8,A,C,E}
+\                  --                 \CM Capture Mode
+\                    --               \CCIS
+\                       -             \SCS
+\                        --           \CLLD
+\                          -          \CAP
+\                            ---      \OUTMOD \ 011 = set/reset
+\                               -     \CCIE
+\                                 -   \CCI
+\                                  -  \OUT
+\                                   - \COV
+\                                    -\CCIFG
+\ -------------------------------\
+\ LCD_TIM_CCRx                   \
+\ -------------------------------\
+\ LCD_TIM_EX0                    \ 
+\ ------------------------------\
+\ set LCD_TIM_ to make 50kHz PWM \ for LCD_Vo, works without interrupt
+\ ------------------------------\
+\    MOV #%1000010100,&LCD_TIM_CTL \ SMCLK/1, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (1 MHZ)
+\ ------------------------------\
+\    MOV #%1001010100,&LCD_TIM_CTL \ SMCLK/2, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (2 MHZ)
+\ ------------------------------\
+\    MOV #%1010010100,&LCD_TIM_CTL \ SMCLK/4, up mode, clear timer, no int
+\    MOV #1,&LCD_TIM_EX0        \ predivide by 2 in LCD_TIM_EX0 register (4 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #0,&LCD_TIM_EX0        \ predivide by 1 in LCD_TIM_EX0 register (8 MHZ)
+\ ------------------------------\
+    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+    MOV #1,&LCD_TIM_EX0         \ predivide by 2 in LCD_TIM_EX0 register (16 MHZ)
+\ ------------------------------\
+\    MOV #%1011010100,&LCD_TIM_CTL \ SMCLK/8, up mode, clear timer, no int
+\    MOV #2,&LCD_TIM_EX0        \ predivide by 3 in LCD_TIM_EX0 register (24 MHZ)
+\ ------------------------------\
+    MOV #19,&LCD_TIM_CCR0       \ 19+1=20*1us=20us
+\ ------------------------------\
+\ set LCD_TIM_.2 to generate PWM for LCD_Vo
+\ ------------------------------\
+    MOV #%01100000,&LCD_TIM_CCTL2 \ output mode = set/reset \ clear CCIFG
+    MOV #10,&LCD_TIM_CCR2       \ contrast adjust : 10/20 ==> LCD_Vo = -0V6|+3V6 (Vcc=3V6)
+\    MOV #12,&LCD_TIM_CCR2        \ contrast adjust : 12/20 ==> LCD_Vo = -1V4|+3V3 (Vcc=3V3)
 \ ------------------------------\
     BIS.B #LCDVo,&LCDVo_DIR     \
-    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2 TB0.2
+    BIS.B #LCDVo,&LCDVo_SEL     \ SEL.2
 \ ------------------------------\
     BIS.B #LCD_CMD,&LCD_CMD_DIR \ lcd_cmd as outputs
     BIC.B #LCD_CMD,&LCD_CMD_REN \ lcd_cmd pullup/down disable
 \ ------------------------------\
     BIS.B #LCD_DB,&LCD_DB_DIR   \ as output, wired to DB(4-7) LCD_Data
     BIC.B #LCD_DB,&LCD_DB_REN   \ LCD_Data pullup/down disable
-\ ------------------------------\
-\ WDT interval init part        \
-\ ------------------------------\
-    MOV #$5A5E,&WDTCTL         \ init WDT VLOCLK source ~10kHz /2^9 (50 ms), interval mode
-\    MOV #$5A3D,&WDTCTL         \ init WDT ACLK source 32.768kHz /2^13 (250 ms), interval mode
-\    MOV #$5A5D,&WDTCTL         \ init WDT Vloclk source 10kHz /2^13 (800 ms), interval mode
-    BIS #1,&SFRIE1              \ enable WDT interval mode interrupt in SFRIE
-\ ------------------------------\
+\ ******************************\
 \ init RC5_Int                  \
-\ ------------------------------\
+\ ******************************\
     BIS.B #RC5,&IR_IE           \ enable RC5_Int
     BIC.B #RC5,&IR_IFG          \ reset RC5_Int flag
+    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\ ******************************\
+\ init WatchDog WDT_TIM_             \ eUSCI_A0 (FORTH terminal) has higher priority than WDT_TIM_
+\ ******************************\
+\              %01 0001 0100    \ TAxCTL
+\               --              \ TASSEL    CLK = ACLK = LFXT = 32768 Hz
+\                  --           \ ID        divided by 1
+\                    --         \ MC        MODE = up to TAxCCRn
+\                        -      \ TACLR     clear timer count
+\                         -     \ TAIE
+\                          -    \ TAIFG
 \ ------------------------------\
-\ init interrupt vectors
+    MOV #%0100010100,&WDT_TIM_CTL \ start WDT_TIM_, ACLK, up mode, disable int, 
 \ ------------------------------\
-    MOV #WDT_INT,&WDT_Vec       \ init WDT interval vector interrupt
-    MOV #RC5_INT,&IR_Vec        \ init interrupt vector
+\                        000    \ TAxEX0
+\                        ---    \ TAIDEX    pre divisor
+\ ------------------------------\
+\          %0000 0000 0000 0101 \ TAxCCR0
+    MOV ##1638,&WDT_TIM_CCR0    \ init WDT for LFXT: 32768/20=1638 ==> 50ms
+\    MOV ##400,&WDT_TIM_CCR0      \ init WDT for VLO: 8000/20=400 ==> 50ms
+\ ------------------------------\
+\          %0000 0000 0001 0000 \ TAxCCTL0
+\                   -           \ CAP capture/compare mode = compare
+\                        -      \ CCIEn
+\                             - \ CCIFGn
+    MOV #%10000,&WDT_TIM_CCTL0  \ enable compare interrupt, clear CCIFG0
+\ ------------------------------\
+    MOV #WDT_INT,&WDT_TIM_0_Vec \ for only CCIFG0 int, this interrupt clears automatically CCIFG0
 \ ------------------------------\
 \ define LPM mode for ACCEPT    \
 \ ------------------------------\
@@ -45919,44 +53487,67 @@ CODE START                      \
 \    MOV #LPM2,&LPM_MODE         \ with MSP430FR57xx, terminal input don't work for LPMx > 2
 \                               \ with MSP430FR2xxx, terminal input don't work for LPMx > 0 ; LPM0 is the default value
 
+\ ------------------------------\
+\ redirects to background task  \
+\ ------------------------------\
+    MOV #SLEEP,X                \
+    MOV #BACKGROUND,2(X)        \
+\ ------------------------------\
+
 LO2HI                           \ no need to push IP because (WARM) resets the Return Stack ! 
 
 \ ------------------------------\
 \ Init LCD 2x20                 \
 \ ------------------------------\
-    $03E8 20_US                \ 1-  wait 20 ms
-    $03 TOP_LCD                \ 2- send DB5=DB4=1
-    $CD 20_US                  \ 3- wait 4,1 ms
-    $03 TOP_LCD                \ 4- send again DB5=DB4=1
-    $5 20_US                   \ 5- wait 0,1 ms
-    $03 TOP_LCD                \ 6- send again again DB5=DB4=1
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $02 TOP_LCD                \ 7- send DB5=1 DB4=0
-    $2 20_US                   \    wait 40 us = LCD cycle
-    $28 LCD_WRF                \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
-    $08 LCD_WRF                \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
+    $03E8 20_US                 \ 1-  wait 20 ms
+    $03 TOP_LCD                 \ 2- send DB5=DB4=1
+    $CD 20_US                   \ 3- wait 4,1 ms
+    $03 TOP_LCD                 \ 4- send again DB5=DB4=1
+    $5 20_US                    \ 5- wait 0,1 ms
+    $03 TOP_LCD                 \ 6- send again again DB5=DB4=1
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $02 TOP_LCD                 \ 7- send DB5=1 DB4=0
+    $2 20_US                    \    wait 40 us = LCD cycle
+    $28 LCD_WRF                 \ 8- %001DNFxx "FonctionSet" D=8/4 DataBus width, Number of lines=2/1, Font bold/normal
+    $08 LCD_WRF                 \ 9- %1DCB   "DisplayControl" : Display off, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
-    $06 LCD_WRF                \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
-    $0C LCD_WRF                \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
+    $06 LCD_WRF                 \ 11- %01xx   "LCD_EntrySet" : address and cursor shift after writing in RAM
+    $0C LCD_WRF                 \ 12- %1DCB "DisplayControl" : Display on, Cursor off, Blink off. 
     LCD_Clear                   \ 10- "LCD_Clear"
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    LIT RECURSE IS WARM         \ insert this START routine between WARM and (WARM)...
-    (WARM)                      \ ...and continue with (WARM) (very, very usefull after COLD or RESET !:-)
-;
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
+    LIT RECURSE IS WARM         \ replace WARM by this START routine
+    ABORT                       \ and continue with the next word after WARM...
+;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
-: STOP                  \ stops multitasking, must to be used before downloading app
-    ['] (WARM) IS WARM  \ remove START app from FORTH init process
-    ECHO COLD           \ reset CPU, interrupt vectors, and start FORTH
+CODE STOP                   \ stops multitasking, must to be used before downloading app
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
+COLON
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
-[THEN]  \ ASM
-    \
+
 ECHO
+            ; downloading RC5toLCD.4th is done
+RST_HERE    ; this app is protected against <reset>
+    \
+[THEN]      \ ASM
+    \
+
+
+
+
+START
+
index 7d9cff0..fadd07e 100644 (file)
 \ under interrupt, IP is free for use
 \ interrupts reset SR register !
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4, R3, R2,RSP, PC
-\ example : PUSHM IP,Y
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
 \
-\ POPM  order :  PC ,RSP, R2, R3, R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
 
 \ ASSEMBLER conditionnal usage after IF UNTIL WHILE : S< S>= U< U>= 0= 0<> 0>=
 \ ASSEMBLER conditionnal usage before ?JMP ?GOTO    : S< S>= U< U>= 0= 0<> 0< 
@@ -310,9 +314,9 @@ BEGIN                           \
 \ ******************************\
 \ RC5_HalfCycle                 \ <--- loop back ---+ with readjusted RC5_Period
 \ ******************************\                   |
-\ MOV #%1000100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
-\ MOV #%1002100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
-\ MOV #%1010100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1000100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/1 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1002100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/2 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
+\ MOV #%1010100100,&RC5_TIM_CTL \ (re)start timer_A | SMCLK/4 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 MOV #%1011100100,&RC5_TIM_CTL   \ (re)start timer_A | SMCLK/8 time interval,free running,clear RC5_TIM__IFG and RC5_TIM_R
 \ RC5_Compute_3/4_Period:       \                   |
     RRUM    #1,X                \ X=1/2 cycle       |
@@ -381,8 +385,8 @@ LO2HI                           \ switch from assembler to FORTH
     ['] LCD_CLEAR IS CR         \ redirects CR
     ['] LCD_WrC  IS EMIT        \ redirects EMIT
     CR ." $" 2 U.R              \ print IR_RC5 code
-    ['] (CR) IS CR              \ restore CR
-    ['] (EMIT) IS EMIT          \ restore EMIT
+    ['] CR >BODY IS CR          \ restore CR
+    ['] EMIT >BODY IS EMIT      \ restore EMIT
 HI2LO                           \ switch from FORTH to assembler
 MOV TOS,&BASE                   \ restore current BASE
 MOV @PSP+,TOS                   \
@@ -398,7 +402,9 @@ ASM BACKGROUND                  \
 \ ...                           \ insert here your background task
 \ ...                           \
 \ ...                           \
-MOV #(SLEEP),PC                 \ Must be the last statement of BACKGROUND
+MOV #SLEEP,X                    \ 2 Must be the last statement of BACKGROUND
+ADD #4,X                        \ 1 X = BODY of SLEEP
+MOV X,PC                        \ 3 
 ENDASM                          \
 \ ------------------------------\
     \
@@ -537,22 +543,25 @@ LO2HI                           \ no need to push IP because (WARM) resets the R
     ['] LCD_HOME IS CR          \ ' CR redirected to LCD_HOME
     ['] LCD_WRC  IS EMIT        \ ' EMIT redirected to LCD_WrC
     CR ." I love you"   
-    ['] (CR) IS CR              \ ' (CR) is CR
-    ['] (EMIT) IS EMIT          \ ' (EMIT) is EMIT
-\    NOECHO                      \ uncomment to run this app without terminal connexion
-    CR
-    ."    RC5toLCD is running. Type STOP to quit"
+    ['] CR >BODY IS CR          \
+    ['] EMIT >BODY IS EMIT      \
+    ." RC5toLCD is running. Type STOP to quit"
     LIT RECURSE IS WARM         \ replace WARM by this START routine
     ABORT                       \ and continue with the next word after WARM...
 ;                               \ ...until interpreter falls in sleep mode within ACCEPT.
     \
 
 CODE STOP                   \ stops multitasking, must to be used before downloading app
-    MOV #SLEEP,X            \
-    MOV #(SLEEP),2(X)       \ restore the default background
+\ restore default action of primary DEFERred word SLEEP, assembly version
+    MOV #SLEEP,X            \ the ASM word SLEEP is only visible in mode assembler. 
+    ADD #4,X                \ X = BODY of SLEEP
+    MOV X,-2(X)             \ restore the default background
+
 COLON
-    ['] (WARM) IS WARM      \ remove START app from FORTH init process
-    ECHO COLD               \ reset CPU, interrupt vectors, and start FORTH
+\ restore default action of primary DEFERred word WARM, FORTH version
+    ['] WARM >BODY IS WARM  \ remove START app from FORTH init process
+
+    COLD                    \ because we want to reset CPU and interrupt vectors
 ;
     \
 
index 73cc08a..107ad25 100644 (file)
 \ scratch registers Y to S are free for use
 \ under interrupt, IP is free for use
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4
-\ example : PUSHM IP,Y
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
 \
-\ POPM  order :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
 
 \ ASSEMBLER conditionnal usage after IF UNTIL WHILE : S< S>= U< U>= 0= 0<> 0>=
 \ ASSEMBLER conditionnal usage before GOTO ?GOTO     : S< S>= U< U>= 0= 0<> <0 
@@ -137,7 +141,7 @@ CREATE ABUF 20 ALLOT
 : GET_TIME
     ECHO
     CR CR ."    DATE (DMY): "
-[DEFINED] LOAD" [IF]    \ ACCEPT is a dEFERed word and redirected to SD_ACCEPT!"
+[DEFINED] LOAD" [IF]    \ ACCEPT is a dEFERed word and redirected to SD_ACCEPT!
     ABUF ABUF 20 (ACCEPT) EVALUATE CR 3 SPACES DATE!
     CR CR ."    TIME (HMS): "
     ABUF ABUF 20 (ACCEPT) EVALUATE CR 3 SPACES TIME!
index e1beb79..458395f 100644 (file)
@@ -6,17 +6,21 @@
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR4133  CHIPSTICK_FR2433    MSP_EXP430FR2433    MSP_EXP430FR2355
 
-
 \ REGISTERS USAGE
 \ R4 to R7 must be saved before use and restored after
 \ scratch registers Y to S are free for use
 \ under interrupt, IP is free for use
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4
-\ example : PUSHM IP,Y
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
 \
-\ POPM  order :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
+
 
 \ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
 
@@ -29,7 +33,7 @@ PWR_STATE
     \
 [DEFINED] {SD_TOOLS} [IF] {SD_TOOLS} [THEN]     \ remove {SD_TOOLS} if outside core 
     \
-[DEFINED] ASM [DEFINED] LOAD" AND [UNDEFINED] {SD_TOOLS} AND [IF] \ "
+[UNDEFINED] {SD_TOOLS} [IF] \ 
     \
 MARKER {SD_TOOLS}
     \
@@ -61,6 +65,18 @@ ENDCODE
 [THEN]
     \
 
+[UNDEFINED] AND [IF]
+    \
+\ https://forth-standard.org/standard/core/AND
+\ C AND    x1 x2 -- x3           logical AND
+CODE AND
+AND @PSP+,TOS
+MOV @IP+,PC
+ENDCODE
+    \
+[THEN]
+    \
+
 [UNDEFINED] DUMP [IF]       \ defined in {UTILITY}
 : DUMP                      \ adr n  --   dump memory
   BASE @ >R $10 BASE !
@@ -98,8 +114,7 @@ CODE FAT                            \ Display CurFATsector
 \ ----------------------------------\
     SUB     #4,PSP                  \
     MOV     TOS,2(PSP)              \
-    MOV     &CurFATsector,0(PSP)    \ FATsectorLO
-    ADD     &OrgFAT1,0(PSP)         \
+    MOV     &OrgFAT1,0(PSP)         \
     MOV     #0,TOS                  \ FATsectorHI = 0
     JMP     SECTOR                  \ jump to a defined word
 ENDCODE
@@ -110,14 +125,14 @@ ENDCODE
 \ ----------------------------------\
 CODE CLUSTER                        \ cluster.  --        don't forget to add decimal point to your cluster number
 \ ----------------------------------\
-    MOV.B &SecPerClus,W             \ 3 SecPerClus(5-1) = multiplicator
-    MOV @PSP,X
-    RRA W                           \ 1
+    MOV.B &SecPerClus,W             \ SecPerClus(54321) = multiplicator
+    MOV @PSP,X                      \ X = ClusterL
+    RRA W                           \
     U< IF                           \ case of SecPerClus>1
         BEGIN
-            ADD X,X                 \ (RLA) shift one left MULTIPLICANDlo16
-            ADDC TOS,TOS            \ (RLC) shift one left MULTIPLICANDhi8
-            RRA W                   \ shift one right multiplicator
+            ADD X,X                 \ (RLA) shift one left MULTIPLICANDlo16
+            ADDC TOS,TOS            \ (RLC) shift one left MULTIPLICANDhi8
+            RRA W                   \ shift one right multiplicator
         U>= UNTIL                   \ carry set
     THEN                            \
     ADD     &OrgClusters,X          \ add OrgClusters = sector of virtual cluster 0 (word size)
index 35fd571..e35b8e7 100644 (file)
@@ -6,19 +6,38 @@
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR4133  MSP_EXP430FR2433    MSP_EXP430FR2355    CHIPSTICK_FR2433
 
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+\
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
+
+
+
+ECHO
 
 \ -----------------------------------------------------------------------
 \ test CPUx instructions PUSHM, POPM, RLAM, RRAM, RRCM, RRUM
 \ -----------------------------------------------------------------------
 CODE TESTPUSHM
+\            PUSHM  #16,R14     \ uncomment to test error "out of bounds"
+\            PUSHM  #2,R0       \ uncomment to test error "out of bounds"
+\            PUSHM  #0,IP       \ uncomment to test error "out of bounds"
+\            POPM   #17,R15     \ uncomment to test error "out of bounds"
+\            POPM   #2,R0       \ uncomment to test error "out of bounds"
+\            POPM   #0,IP       \ uncomment to test error "out of bounds"
             MOV     #22222,Y
             MOV     #3,X
             MOV     #2,W
             MOV     #1,T
             MOV     #0,S
-\            PUSHM   Y,IP       \ uncomment to test error (registers bad order) 
-            PUSHM   IP,W        \ PUSHM order : PSP,TOS,IP,S,T,W,X,Y,rEXIT,rDOVAR,rDOCON,rDODOES
-            POPM    W,IP        \ POPM order  : rDODOES,rDOCON,rDOVAR,rEXIT,Y,X,W,T,S,IP,TOS,PSP
+
+            PUSHM   #4,IP       \ PUSHM IP,S,T,W
+            POPM    #4,IP       \ POPM  W,T,S,IP
             SUB     #10,PSP
             MOV     TOS,8(PSP)  \ save old TOS
             MOV     S,6(PSP)
@@ -26,7 +45,8 @@ CODE TESTPUSHM
             MOV     W,2(PSP)
             MOV     X,0(PSP)
             MOV     Y,TOS
-\            RLAM    #0,TOS     \ uncomment to test error (bad shift value)
+\            RLAM    #0,TOS      \ uncomment to test error "out of bounds" 
+\            RLAM    #5,TOS      \ uncomment to test error "out of bounds" 
             RRAM    #1,TOS      \ 0 < shift value < 5
             RLAM    #2,TOS
             RRCM    #1,TOS
@@ -38,30 +58,9 @@ CODE TESTPUSHM
 TESTPUSHM  ; you should see 11111 3 2 1 0 -->
 
 CODE TESTPOPM
-            MOV     #22222,Y
-            MOV     #3,X
-            MOV     #2,W
-            MOV     #1,T
-            MOV     #0,S
-\            PUSHM   W,IP        \ uncomment to test error "out of bounds" 
-            PUSHM   IP,W        \ PUSHM order : PSP,TOS,IP,S,T,W,X,Y,rEXIT,rDOVAR,rDOCON,rDODOES
-            POPM    W,IP        \ POPM order  : rDODOES,rDOCON,rDOVAR,rEXIT,Y,X,W,T,S,IP,TOS,PSP
-            SUB     #10,PSP
-            MOV     TOS,8(PSP)  \ save old TOS
-            MOV     S,6(PSP)
-            MOV     T,4(PSP)
-            MOV     W,2(PSP)
-            MOV     X,0(PSP)
-            MOV     Y,TOS
-\            RLAM    #0,TOS      \ uncomment to test error "out of bounds" 
-\            RLAM    #5,TOS      \ uncomment to test error "out of bounds" 
-            RRAM    #1,TOS      \ 0 < shift value < 5
-            RLAM    #2,TOS
-            RRCM    #1,TOS
-            RRUM    #1,TOS
-            COLON               \ high level part of the word starts here...
-            space . . . . .
-            ;                   \ and finishes here.
+            JMP TESTPUSHM
+ENDCODE
+
     \
 TESTPOPM  ; you should see 11111 3 2 1 0 -->
 
@@ -179,15 +178,6 @@ ENDCODE
 
 
 \ -----------------------------------------------------------------------
-\ tests behaviour of assembly error 
-\ -----------------------------------------------------------------------
-\ R16 causes an error, assembler context is aborted and the word TEST7 is "hidden".
-
-\ CODE TEST7
-\            MOV 0(PSP),0(R16)  ; display an error "out of bounds" -->
-
-
-\ -----------------------------------------------------------------------
 \ tests access to a CREATED word with assembler 
 \ -----------------------------------------------------------------------
 
@@ -274,3 +264,53 @@ TABLE10 PFA_TABLE ! TABLE 10 DUMP
 TABLE20 PFA_TABLE ! TABLE 10 DUMP
     \
 
+\ -----------------------------------------------------------------------
+\ tests behaviour of assembly error 
+\ -----------------------------------------------------------------------
+\ R16 causes an error, assembler context is aborted and the word TEST7 is "hidden".
+
+\CODE TEST7
+\           MOV 0(truc),0(R16)  ; display an error "out of bounds" -->
+
+; -----------------------------------------------------------------------
+; create a primary DEFERred assembly word
+; -----------------------------------------------------------------------
+
+DEFER TRUC              ; here, TRUC is a secondary DEFERred word (i.e. without BODY)
+    \
+
+CODENNM                 ; leaves its execution address (CFA) on stack
+    SUB #2,PSP
+    MOV TOS,0(PSP)
+    MOV @IP+,PC
+ENDCODE IS TRUC         ; TRUC becomes a primary DEFERred word
+                        ; with its default action (DUP) located at its BODY addresse.
+    \
+TRUC .                  ; display TOS value -->
+    \
+
+' TRUC >BODY IS TRUC    ; TRUC is reinitialzed with its default action
+    \
+
+TRUC .                  ; display TOS value --> 
+    \
+' DROP IS TRUC          ; TRUC is redirected to DROP
+    \
+TRUC                   ; The generated error displays stack empty! in reverse video, removes the TRUC definition and restarts the interpretation after the end of the file. And as you see, FastForth is able to display long lines, interesting, doesn't it? --> 
+   
+bla
+bla
+bla
+
+
+
+
+
+
+
+bla
+...
+
+
+
+
index 6a1c9ed..5010714 100644 (file)
@@ -2,24 +2,26 @@
 \ UTILITY.f
 \ ------------------------------------------------------------------------------
 
-\ must be preprocessed with yourtarget.pat file because PSTACK,CONTEXT,INI_THREAD:
-
-\ TARGET SELECTION: selects to highlight target then CTRL+6
+\ TARGET SELECTION
 \ MSP_EXP430FR5739  MSP_EXP430FR5969    MSP_EXP430FR5994    MSP_EXP430FR6989
 \ MSP_EXP430FR4133  MSP_EXP430FR2433    MSP_EXP430FR2355    CHIPSTICK_FR2433
 
-\ ------------------------------------------------------------------------------
+\ must be preprocessed with yourtarget.pat file because PSTACK,CONTEXT,INI_THREAD
 
 \ REGISTERS USAGE
-\ R4 to R7 must be saved before use and restored after
+\ rDODOES to rEXIT must be saved before use and restored after
 \ scratch registers Y to S are free for use
 \ under interrupt, IP is free for use
 
-\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4
-\ example : PUSHM IP,Y
+\ PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+\ PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+\ example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
 \
-\ POPM  order :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP
-\ example : POPM Y,IP
+\ POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+\ POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+\ example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
 
 \ FORTH conditionnals:  unary{ 0= 0< 0> }, binary{ = < > U< }
 
@@ -27,8 +29,7 @@
 
 \ ASSEMBLER conditionnal usage with ?JMP ?GOTO      S<  S>=  U<   U>=  0=  0<>  <0
 
-\ ------------------------------------------------------------------------------
-
+PWR_STATE
     \
 [DEFINED] {TOOLS} [IF] {TOOLS} [THEN]     \ remove {UTILITY} if outside core 
     \
@@ -208,25 +209,25 @@ LO2HI
 
 [THEN]
     \
-ECHO
-    \
 PWR_HERE
-    \
-: BS 8 EMIT ;
-    \
+ECHO
+
+: BS 8 EMIT ;   \ 8 EMIT = BackSpace EMIT
 : ESC #27 EMIT ;
-    \
 : specs         \ to see Fast Forth specifications
 PWR_STATE       \ remove specs definition when running, and before bytes free processing
-6 0 DO BS LOOP  \ 8 EMIT = BackSpace EMIT
+6 0 DO BS LOOP  \ to reach start of line
 ESC ." [7m"     \ set reverse video
 ." FastForth "
-INI_THREAD @ U. ." Threads "    \ vocabularies threads
-FREQ_KHZ @ 0 1000 UM/MOD U. BS ." ," U. ." MHz "    \ MCLK
-HECTOBAUDS @ 0 10 UM/MOD U. BS ." ," U. ." kBds "   \ Terminal Baudrate 
+INI_THREAD @ U. BS ." Threads "   \ vocabularies threads
+." DeviceID=$"
+$10 BASE ! $1A04 @ U. #10 BASE ! 
+FREQ_KHZ @ 0 1000 UM/MOD U. ?DUP
+IF      BS ." ," U.
+THEN    BS ." MHz "            \ MCLK
 FRAM_FULL HERE - U. ." bytes free"
-ESC ." [0m"    \ reset reverse video
+ESC ." [0m"                     \ reset reverse video
 ;
     \
 
-specs
\ No newline at end of file
+specs
index f0985d9..53b0968 100644 (file)
@@ -42,6 +42,7 @@ TLVEND          .equ 01A31h      ;
 ; ----------------------------------------------
 RAMSTART        .equ 02000h
 RAMEND          .equ 02FFFh
+RAMLEN          .equ 01000h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
@@ -60,6 +61,7 @@ BSL_I2C_ADRE    .equ 0FF8Ch      ;
 JTAG_PASSWORD   .equ 0FF88h      ; 256 bits
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 INTVECT         .equ 0FFCEh      ; FFCE-FFFF :  24 vectors + reset
+VECTLEN         .equ 32h
 ; ----------------------------------------------
 
 ;   .org    INTVECT             ; FFCE-FFFF 24 vectors + reset
@@ -399,32 +401,5 @@ SD_TXBUF       .equ eUSCI_B1_SFR + 0Eh    ; USCI_B1 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B1_SFR + 2Ch    ; USCI_B1 Interrupt Flags Register
     .ENDIF ;UCB1_SD
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
index 4c41fd6..0c34587 100644 (file)
@@ -36,6 +36,7 @@ TLVEND          .equ 01A7Fh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 02000h
 RAMEND          .equ 02FFFh
+RAMLEN          .equ 01000h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
@@ -46,8 +47,9 @@ JTAG_SIG2       .equ 0FF82h      ; if JTAG_SIG <> |0xFFFFFFFF, 0x00000000|, SBW
 BSL_SIG1        .equ 0FF84h      ;
 BSL_SIG2        .equ 0FF86h      ;
 JTAG_PASSWORD   .equ 0FF88h      ; 256 bits
-INTVECT         .equ 0FFDAh      ; FFDA-FFFF
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
+INTVECT         .equ 0FFDAh      ; FFDA-FFFF
+VECTLEN         .equ 26h
 ; ----------------------------------------------
 
 ; ----------------------------------------------
@@ -347,32 +349,6 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; USCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; USCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
 
index 4b3127f..b5400dc 100644 (file)
@@ -30,6 +30,7 @@ TLVEND          .equ 01A7Fh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 02000h
 RAMEND          .equ 027FFh
+RAMLEN          .equ 00800h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
@@ -41,6 +42,7 @@ BSL_SIG1        .equ 0FF84h      ;
 BSL_SIG2        .equ 0FF86h      ;
 JTAG_PASSWORD   .equ 0FF88h      ; 256 bits
 INTVECT         .equ 0FFE2h      ; FFE2-FFFF
+VECTLEN         .equ 1Eh
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 
 ; ----------------------------------------------
@@ -320,6 +322,7 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; USCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; USCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
 
 
index edd061a..3d9d667 100644 (file)
@@ -34,6 +34,7 @@ TLVEND          .equ 01A7Fh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 01C00h
 RAMEND          .equ 01FFFh
+RAMLEN          .equ 00400h
 RAM_1K
 ; ----------------------------------------------
 ; FRAM
@@ -46,6 +47,7 @@ BSL_SIG1        .equ 0FF84h      ;
 BSL_SIG2        .equ 0FF86h      ;
 JTAG_PASSWORD   .equ 0FF88h      ; 256 bits
 INTVECT         .equ 0FFCEh      ; FFCE-FFFF
+VECTLEN         .equ 32h
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 ; ----------------------------------------------
 
@@ -338,3 +340,5 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; USCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; USCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
+
index 340318d..9055b14 100644 (file)
@@ -34,6 +34,7 @@ TLVEND          .equ 01A7Fh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 01C00h
 RAMEND          .equ 01FFFh
+RAMLEN          .equ 00400h
 RAM_1K
 ; ----------------------------------------------
 ; FRAM
@@ -46,6 +47,7 @@ BSL_SIG1        .equ 0FF84h      ;
 BSL_SIG2        .equ 0FF86h      ;
 JTAG_PASSWORD   .equ 0FF88h      ; 256 bits
 INTVECT         .equ 0FFCEh      ; FFCE-FFFF
+VECTLEN         .equ 32h
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 ; ----------------------------------------------
 
@@ -394,3 +396,4 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; USCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; USCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
index 689cd48..48474db 100644 (file)
@@ -45,6 +45,7 @@ TLVEND          .equ 01AFFh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 01C00h
 RAMEND          .equ 023FFh
+RAMLEN          .equ 00800h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
@@ -59,6 +60,7 @@ JTAG_PASSWORD   .equ 0FF88h      ; 256 bits max
 IPE_SIG_VALID   .equ 0FF88h      ; one word
 IPE_STR_PTR_SRC .equ 0FF8Ah      ; one word
 INTVECT         .equ 0FFCCh      ; FFCC-FFFF
+VECTLEN         .equ 34h
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 ; ----------------------------------------------
 
@@ -433,4 +435,5 @@ SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; eUSCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
 
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
index 9735179..35bc443 100644 (file)
@@ -45,6 +45,7 @@ TLVEND          .equ 01AFFh      ;
 ; ----------------------------------------------
 RAMSTART        .equ 01C00h
 RAMEND          .equ 023FFh
+RAMLEN          .equ 00800h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
@@ -59,6 +60,7 @@ JTAG_PASSWORD   .equ 0FF88h      ; 256 bits max
 IPE_SIG_VALID   .equ 0FF88h      ; one word
 IPE_STR_PTR_SRC .equ 0FF8Ah      ; one word
 INTVECT         .equ 0FFCCh      ; FFCC-FFFF
+VECTLEN         .equ 34h
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 ; ----------------------------------------------
 
@@ -432,5 +434,6 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; eUSCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; eUSCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
 
index fe5e7e7..d4b372c 100644 (file)
@@ -48,6 +48,7 @@ TinyRAM         .equ 00Ah
 TinyRAMEnd      .equ 01Fh
 RAMSTART        .equ 01C00h
 RAMEND          .equ 02BFFh
+RAMLEN          .equ 01000h
 SharedRAMSTART  .equ 02C00h
 SharedRAMEND    .equ 03BFFh
 ; ----------------------------------------------
@@ -64,6 +65,7 @@ JTAG_PASSWORD   .equ 0FF88h      ; 256 bits max
 IPE_SIG_VALID   .equ 0FF88h      ; one word
 IPE_STR_PTR_SRC .equ 0FF8Ah      ; one word
 INTVECT         .equ 0FFB4h      ; FFB4-FFFF
+VECTLEN         .equ 4Ch
 BSL_PASSWORD    .equ 0FFE0h      ; 256 bits
 ; ----------------------------------------------
 ;    .org    SIGNATURES
@@ -533,11 +535,11 @@ TERMVEC     .equ 0FFE6h
     .ENDIF ;UCA1_TERM
 
     .IFDEF UCA1_SD
-SD_CTLW0       .equ eUSCI_A1_SFR + 00h    ; eUSCI_A1 Control Word Register 0
-SD_BRW         .equ eUSCI_A1_SFR + 06h    ; eUSCI_A1 Baud Word Rate 0
-SD_RXBUF       .equ eUSCI_A1_SFR + 0Ch    ; eUSCI_A1 Receive Buffer 8
-SD_TXBUF       .equ eUSCI_A1_SFR + 0Eh    ; eUSCI_A1 Transmit Buffer 8
-SD_IFG         .equ eUSCI_A1_SFR + 1Ch    ; eUSCI_A1 Interrupt Flags Register
+SD_CTLW0        .equ eUSCI_A1_SFR + 00h    ; eUSCI_A1 Control Word Register 0
+SD_BRW          .equ eUSCI_A1_SFR + 06h    ; eUSCI_A1 Baud Word Rate 0
+SD_RXBUF        .equ eUSCI_A1_SFR + 0Ch    ; eUSCI_A1 Receive Buffer 8
+SD_TXBUF        .equ eUSCI_A1_SFR + 0Eh    ; eUSCI_A1 Transmit Buffer 8
+SD_IFG          .equ eUSCI_A1_SFR + 1Ch    ; eUSCI_A1 Interrupt Flags Register
     .ENDIF ;UCA1_SD
 
 
@@ -545,12 +547,11 @@ SD_IFG         .equ eUSCI_A1_SFR + 1Ch    ; eUSCI_A1 Interrupt Flags Register
 ; eUSCI_B0
 ; ----------------------------------------------------------------------
     .IFDEF UCB0_SD
-SD_CTLW0       .equ eUSCI_B0_SFR + 00h    ; eUSCI_B0 Control Word Register 0
-SD_BRW         .equ eUSCI_B0_SFR + 06h    ; eUSCI_B0 Baud Word Rate 0
-SD_RXBUF       .equ eUSCI_B0_SFR + 0Ch    ; eUSCI_B0 Receive Buffer 8
-SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; eUSCI_B0 Transmit Buffer 8
-SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; eUSCI_B0 Interrupt Flags Register
+SD_CTLW0        .equ eUSCI_B0_SFR + 00h    ; eUSCI_B0 Control Word Register 0
+SD_BRW          .equ eUSCI_B0_SFR + 06h    ; eUSCI_B0 Baud Word Rate 0
+SD_RXBUF        .equ eUSCI_B0_SFR + 0Ch    ; eUSCI_B0 Receive Buffer 8
+SD_TXBUF        .equ eUSCI_B0_SFR + 0Eh    ; eUSCI_B0 Transmit Buffer 8
+SD_IFG          .equ eUSCI_B0_SFR + 2Ch    ; eUSCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
-
-
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
index 6650e82..be79822 100644 (file)
@@ -41,18 +41,20 @@ TLVEND         .equ 01AFFh      ;
 ; ----------------------------------------------
 RAMSTART       .equ 01C00h
 RAMEND         .equ 023FFh
+RAMLEN          .equ 00800h
 ; ----------------------------------------------
 ; FRAM
 ; ----------------------------------------------
-PROGRAMSTART   .equ 04400h      ; Code space start
-SIGNATURES     .equ 0FF80h      ; JTAG, BSL and IP Encapsulation signatures 1 and 2
+PROGRAMSTART    .equ 04400h      ; Code space start
+SIGNATURES      .equ 0FF80h      ; JTAG, BSL and IP Encapsulation signatures 1 and 2
 JTAG_SIG1       .equ 0FF80h      ; if 0, enable JTAG/SBW
 JTAG_SIG2       .equ 0FF82h      ; if JTAG_SIG1=0xAAAA, length of password string @ JTAG_PASSWORD
 BSL_SIG1        .equ 0FF84h      ;
 BSL_SIG2        .equ 0FF86h      ;
-JTAG_PASSWORD  .equ 0FF86h      ; up to 0FFC5h : 256 bits
-INTVECT        .equ 0FFC6h      ; FFC6-FFFF
-BSL_PASSWORD   .equ 0FFE0h      ; up to 0FFFFh : 256 bits
+JTAG_PASSWORD   .equ 0FF86h      ; up to 0FFC5h : 256 bits
+INTVECT         .equ 0FFC6h      ; FFC6-FFFF
+VECTLEN         .equ 3Ah
+BSL_PASSWORD    .equ 0FFE0h      ; up to 0FFFFh : 256 bits
 ; ----------------------------------------------
 
 ; ----------------------------------------------
@@ -533,5 +535,5 @@ SD_TXBUF       .equ eUSCI_B0_SFR + 0Eh    ; eUSCI_B0 Transmit Buffer 8
 SD_IFG         .equ eUSCI_B0_SFR + 2Ch    ; eUSCI_B0 Interrupt Flags Register
     .ENDIF ;UCB0_SD
 
-
+UCB0STATW       .equ eUSCI_B0_SFR + 08h     ; eUSCI_B0 Status words
 
index 90972fc..a359325 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 84 C0 5D 80 04 05 00 18 00 C6 9B 6E 92
-2C 84 3E 84 00 00 00 00
+10 00 0D 00 01 49 C0 5D 05 00 18 00 86 9B 56 92
+24 84 36 84 00 00 00 00 00 00
+@2400
+00 00
 @8000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 81 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 81 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 81 02 42 4C 00
-85 12 20 00 1C 82 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C 82 04 42 41 53 45 00 85 12 DC 21
 C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA 81 06 55 4D 2F
 4D 4F 44 00 30 12 5A 80 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 80 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 82
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 82 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 82 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 82
 02 23 53 00 0D 12 87 12 A2 82 DC 82 2D 83 09 93
@@ -53,400 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 82 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 82 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 82 02 55 2E 00 0D 12 87 12 42 82 2C 80 00 00
-D4 82 F0 82 40 85 08 85 22 80 3E 81 02 44 2E 00
+D4 82 F0 82 24 85 EC 84 22 80 3E 81 02 44 2E 00
 0D 12 87 12 42 82 70 80 82 80 44 81 D4 82 92 80
-14 83 F0 82 40 85 08 85 22 80 7C 80 01 2E 0E 93
+14 83 F0 82 24 85 EC 84 22 80 7C 80 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 83 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 80 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC 82 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E 83 05 28 4B 45 59 29 18 42
-8C 05 2F 83 8F 4E 00 00 B0 12 2C 84 92 B3 9C 05
-FD 27 1E 42 8C 05 B0 12 3E 84 30 4D 08 82 03 4B
-45 59 30 40 AE 83 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 83
-06 41 43 43 45 50 54 00 3C 40 A4 84 3B 40 6E 84
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 84 92 B3 9C 05 05 24 18 42 8C 05 38 90
-0A 00 04 20 21 53 39 40 52 84 4D 15 A2 B3 9C 05
-FD 27 B2 40 11 00 8E 05 D2 C3 03 02 30 41 B2 40
-13 00 8E 05 D2 D3 03 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 84 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 8C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 9C 05
-FD 27 82 48 8E 05 30 4D 9A 84 2D 83 92 B3 9C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 83 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 83 04 45 4D 49
-54 00 30 40 C4 84 CC 84 04 45 43 48 4F 00 B2 40
-82 48 92 84 82 43 E4 21 30 4D 5C 83 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 84 92 43 E4 21 30 4D
-0E 83 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 85 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 85 EF 3F 2C 85 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 83 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 85 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 85 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 84 04 28 43 52 29 00
-0D 12 87 12 88 85 02 0D 0A 00 40 85 22 80 92 83
-02 43 52 00 30 40 70 85 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 85 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E 85 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 85
-82 53 22 00 0D 12 87 12 2C 80 88 85 30 88 B8 85
-2C 80 22 00 0C 86 A6 85 DA 85 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC 84 82 2E 22 00 0D 12 87 12 C4 85 2C 80 40 85
-30 88 22 80 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 80 34 40 0C 80 30 4D 8C 81 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 87 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 87 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 82 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 84 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 81 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E 88 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C 80 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 85 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 88 20 82 0C 86
-A2 88 3D 40 AA 88 E1 22 44 3E AC 88 0A 4E 3E 4F
-3D 40 C2 88 37 27 3D 40 9C 88 1A E2 BE 21 B8 27
-B2 23 C4 88 3E 4F 3D 40 9C 88 BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 8B CC 3F
-1E 88 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 88 FE 88 B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 81
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 85 05 0D 0A 6F
-6B 20 40 85 D6 83 08 85 96 88 D6 80 68 81 88 85
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 89
-2C 80 30 FF 74 83 A4 81 88 85 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 89 38 82 EA 80 B0 81 2A 89
-88 85 05 0D 0A 20 20 20 AC 81 32 89 F0 83 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 90 16 91
-B2 40 60 84 54 84 B2 40 C4 84 D4 84 B2 40 70 85
-86 85 B2 40 AE 83 D4 83 82 43 F4 98 82 43 00 99
-82 43 0C 99 82 43 3C 99 82 43 48 99 82 43 54 99
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 84 B0 12 96 89 A2 B3
-9C 05 FD 27 B2 40 11 00 8E 05 D2 C3 03 02 92 C3
-9C 05 38 40 F0 FF 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 9C 05 F3 23 0D 12 87 12 88 85 04 1B
-5B 37 6D 00 40 85 2C 80 E4 21 EA 80 4C 80 B0 81
-32 8A 88 85 05 6C 69 6E 65 3A 40 85 38 81 26 83
-DE 84 40 85 88 85 04 1B 5B 30 6D 00 40 85 2E 90
-A6 85 84 89 7E 89 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 85 2C 80 C8 89 30 88 22 80 64 86 01 27
-0D 12 87 12 20 82 0C 86 6A 86 B0 81 70 8A 22 80
-CC 88 3E 82 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 8A 01 5D B2 43 BE 21
-30 4D 80 8A 83 5B 27 5D 0D 12 87 12 60 8A 2C 80
-2C 80 30 88 30 88 22 80 BE 4F 02 00 3E 4F 30 4D
-6A 85 82 49 53 00 0D 12 87 12 38 82 EA 80 B0 81
-CC 8A 98 8A 2C 80 A8 8A 30 88 22 80 60 8A A8 8A
-22 80 B2 8A 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 85 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 89 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 82 0C 86 6A 86 4C 80 B0 81 70 8A
-68 81 B0 81 32 8B 2C 80 2C 80 30 88 30 88 2C 80
-30 88 30 88 22 80 82 9F BC 21 2C 25 0D 12 87 12
-88 85 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 89 94 8A 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C 80 22 80 30 88 36 8B 82 8A 22 80 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 8B 01 3A 30 12 6E 8B 0D 12 87 12
-E6 85 20 82 0C 86 98 8B 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 86 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 8B BA 40 86 12 FC FF DF 3C 72 88
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 8B BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 8B 06 43
-52 45 41 54 45 00 B0 12 8C 8B BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 88 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 8C 05 44 45 46 45 52 B0 12 8C 8B BA 40 30 40
-FC FF BA 40 2E 8C FE FF A9 3C FE 8B 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 8B 86 5B
-54 48 45 4E 5D 00 30 4D 7E 8C 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 80 01 00 20 82 0C 86 78 88
-3C 80 B0 81 FE 8C 82 80 82 80 88 85 04 5B 49 46
-5D 00 54 8C BA 81 C0 8C 62 85 2E 81 AC 81 F6 8C
-82 80 82 80 88 85 06 5B 45 4C 53 45 5D 00 54 8C
-BA 81 E4 8C 62 85 38 81 3C 80 B0 81 F6 8C 2E 81
-AC 81 F6 8C 88 85 06 5B 54 48 45 4E 5D 00 54 8C
-BA 81 F6 8C 38 81 4C 80 BA 81 9A 8C 22 80 62 85
-88 85 05 0D 0A 6B 6F 20 40 85 D6 83 86 88 AC 81
-9A 8C 8A 8C 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 8D 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 82 0C 86 6A 86 64 80 5C 81 22 80
-24 8D 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 82 0C 86 6A 86 64 80 22 80 5C 8D 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 88 06 4D 41 52
-4B 45 52 00 B0 12 8C 8B BA 40 84 12 FC FF BA 40
-5A 8D FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 8A 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 81 00 00
-2E 53 30 4D 32 8C 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC 81 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 85 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C 8C 85 42 45 47 49 4E 30 40
-74 83 E6 8D 85 55 4E 54 49 4C 39 40 B0 81 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 8A 85 41 47 41 49 4E 39 40 AC 81 EF 3F
-C8 8B 85 57 48 49 4C 45 0D 12 87 12 AC 8D 70 80
-22 80 EC 8A 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 8E EC 8D 22 80 C6 8D 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 81 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C 8D
-84 4C 4F 4F 50 00 39 40 E2 81 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 83 85 2B 4C 4F 4F 50 39 40 D0 81 E5 3F
-80 8E 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 81
-00 00 BA 40 AC 81 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 8E
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 8E 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 8C 2C 80 10 00 2C 80
-00 00 C0 81 2C 80 00 00 30 88 E2 81 44 8F 74 83
-2C 80 CE 21 3C 80 EA 80 30 88 F2 80 1E 8C 2C 80
-D0 21 F2 80 22 80 5E 8A 05 46 4F 52 54 48 84 12
-5E 8F C8 99 8C 92 3E 9B 68 8F 72 92 B4 8E 06 9B
-32 9A 50 9A 6C 90 14 9B 5A 9A 00 00 BC 99 8A 8A
-46 9A 00 00 24 8E 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 8B 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 85 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 8E 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E 8F CC 8F E0 8F F0 8F
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 8F 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 8F 6E 92 C6 9B 44 8E 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 90 92 42 0C 18 34 90 EF 3F
-24 90 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 90 92 42 CC 21 34 90 30 4D 38 90 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 8F 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CE FF FA 23 B0 12 8A 89
-B2 40 C6 9B 0C 18 B2 40 6E 92 0E 18 CA 3F A8 8D
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 85 06 0D 1B 5B 37 6D 23 00 40 85 5E 83 88 85
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 85 2C 80 30 FF 74 83 20 81 26 83 88 85 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 89 86 90 04 57
-41 52 4D 00 30 40 B8 90 F8 8D 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02
-92 D3 04 02 B2 40 FE FF 02 02 D2 D3 03 02 F2 43
-22 02 F2 D3 26 02 F2 D0 BF 00 47 02 F2 40 BF 00
-43 02 F2 40 40 00 45 02 F2 40 A5 00 A1 01 F2 40
-20 00 A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40
-FF 1E 80 01 B2 40 BE 00 82 01 B2 40 DC 02 84 01
-39 40 80 01 82 43 88 01 92 D2 5E 01 08 18 A2 93
-08 18 01 24 49 07 38 40 59 14 18 83 FE 23 19 83
-FA 23 3A 40 26 91 39 40 CE FF 89 4A 00 00 29 53
-FC 23 92 42 02 18 E2 FF B2 40 18 00 0A 18 39 40
-00 20 89 43 00 00 29 53 39 90 FF 2F FA 2B 31 40
-E0 20 3F 40 80 20 37 40 22 80 36 40 B4 80 35 40
-00 80 34 40 0C 80 B2 40 0A 00 E2 21 B2 43 B4 21
-92 C3 30 01 18 42 08 18 F2 B2 21 02 04 20 38 E3
-18 53 82 48 08 18 B2 40 81 00 80 05 B2 40 0D 00
-86 05 B2 40 01 49 88 05 F2 D0 0C 00 2B 02 92 C3
-80 05 92 D3 9A 05 3D 40 3C 92 38 90 0A 00 2E 27
-38 90 16 00 2B 2F 28 93 04 23 F9 26 14 91 96 8F
-09 41 53 53 45 4D 42 4C 45 52 84 12 5E 8F 96 98
-04 99 4A 98 6E 99 10 98 96 99 14 95 00 00 06 98
-BA 98 68 98 A8 98 24 96 00 00 00 00 A6 99 92 8F
-B0 90 85 48 49 32 4C 4F 0D 12 87 12 74 83 C0 8D
-30 88 82 8A 9C 8F 4A 92 22 80 1A 91 04 43 4F 44
-45 00 B0 12 8C 8B A2 82 CC 21 0D 12 87 12 7E 8B
-AC 81 84 92 00 00 07 45 4E 44 43 4F 44 45 0D 12
-87 12 B6 8F 36 8B 22 80 40 92 03 41 53 4D 92 42
-E0 21 C0 21 B2 40 4E 92 E0 21 E3 3F A6 92 06 45
-4E 44 41 53 4D 00 92 42 C0 21 E0 21 E8 3F 00 00
-05 43 4F 4C 4F 4E 1A 42 CC 21 BA 40 0D 12 00 00
-BA 40 87 12 02 00 A2 52 CC 21 B2 43 BE 21 30 40
-B6 8F 00 00 05 4C 4F 32 48 49 A2 83 CC 21 1A 42
-CC 21 EE 3F 38 40 C6 21 39 48 2A 48 09 5A 1A 52
-CA 21 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
-82 4A CA 21 30 4D 87 12 0C 86 6A 86 BA 81 48 93
-24 87 B0 81 70 8A 6A 93 4A 93 29 4E 39 90 86 12
-02 20 2E 53 30 41 39 90 85 12 03 20 1E 4E 02 00
-30 41 39 90 84 12 01 20 2E 52 30 41 19 42 CC 21
-A2 53 CC 21 89 4E 00 00 3E 40 29 00 12 12 CA 21
-92 53 CA 21 87 12 0C 86 24 87 B0 81 9A 93 90 93
-21 53 3E 90 10 00 BE 2D 30 41 9C 93 B2 41 CA 21
-22 D3 30 41 0D 12 87 12 20 82 14 93 AE 93 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 0A 4E 3E 4F
-FA 90 23 00 00 00 34 20 92 53 CA 21 B0 12 36 93
-0E 93 04 20 B2 40 00 03 C4 21 27 3C 1E 93 04 20
-B2 40 10 03 C4 21 21 3C 2E 93 04 20 B2 40 20 03
-C4 21 1B 3C 2E 92 04 20 B2 40 20 02 C4 21 15 3C
-3E 92 04 20 B2 40 30 02 C4 21 0F 3C 3E 93 04 20
-B2 40 30 03 C4 21 09 3C B2 40 30 00 C4 21 19 42
-CC 21 A2 53 CC 21 89 4E 00 00 3E 4F 3D 41 30 4D
-FA 90 26 00 00 00 08 20 B2 40 10 02 C4 21 92 53
-CA 21 B0 12 36 93 EB 3F FA 90 40 00 00 00 1A 20
-B2 40 20 00 C4 21 92 53 CA 21 B0 12 7C 93 0E 20
-B2 50 10 00 C4 21 3E 40 2B 00 B0 12 7C 93 33 24
-92 92 C6 21 CA 21 02 24 92 53 CA 21 8E 10 82 5E
-C4 21 D3 3F B0 12 7C 93 F9 23 B2 50 10 00 C4 21
-3E 40 28 00 B0 12 36 93 B0 12 6C 93 E8 3F 0D 12
-87 12 20 82 14 93 A8 94 FE 90 26 00 00 00 3E 40
-20 00 04 20 B2 50 82 00 C4 21 C1 3F B0 12 7C 93
-DE 23 B2 50 80 00 C4 21 3E 40 28 00 B0 12 36 93
-B0 12 6C 93 D4 23 3D 40 70 8A 30 4D 4C 84 04 52
-45 54 49 00 0D 12 87 12 2C 80 00 13 30 88 22 80
-2C 80 2C 00 A4 93 9E 94 FA 94 2E 4E 1E D2 C4 21
-19 42 C2 21 90 3F 04 93 03 4D 4F 56 84 12 F0 94
-00 40 08 95 05 4D 4F 56 2E 42 84 12 F0 94 40 40
-00 00 03 41 44 44 84 12 F0 94 00 50 22 95 05 41
-44 44 2E 42 84 12 F0 94 40 50 2E 95 04 41 44 44
-43 00 84 12 F0 94 00 60 3C 95 06 41 44 44 43 2E
-42 00 84 12 F0 94 40 60 DE 94 04 53 55 42 43 00
-84 12 F0 94 00 70 5A 95 06 53 55 42 43 2E 42 00
-84 12 F0 94 40 70 68 95 03 53 55 42 84 12 F0 94
-00 80 78 95 05 53 55 42 2E 42 84 12 F0 94 40 80
-E0 92 03 43 4D 50 84 12 F0 94 00 90 92 95 05 43
-4D 50 2E 42 84 12 F0 94 40 90 CE 92 04 44 41 44
-44 00 84 12 F0 94 00 A0 AC 95 06 44 41 44 44 2E
-42 00 84 12 F0 94 40 A0 9E 95 03 42 49 54 84 12
-F0 94 00 B0 CA 95 05 42 49 54 2E 42 84 12 F0 94
-40 B0 D6 95 03 42 49 43 84 12 F0 94 00 C0 E4 95
-05 42 49 43 2E 42 84 12 F0 94 40 C0 F0 95 03 42
-49 53 84 12 F0 94 00 D0 FE 95 05 42 49 53 2E 42
-84 12 F0 94 40 D0 00 00 03 58 4F 52 84 12 F0 94
-00 E0 18 96 05 58 4F 52 2E 42 84 12 F0 94 40 E0
-4A 95 03 41 4E 44 84 12 F0 94 00 F0 32 96 05 41
-4E 44 2E 42 84 12 F0 94 40 F0 20 82 A4 93 50 96
-1A 42 C4 21 B2 F0 70 00 C4 21 8A 10 3A F0 0F 00
-82 DA C4 21 4A 3F 84 95 03 52 52 43 84 12 4A 96
-00 10 68 96 05 52 52 43 2E 42 84 12 4A 96 40 10
-74 96 04 53 57 50 42 00 84 12 4A 96 80 10 82 96
-03 52 52 41 84 12 4A 96 00 11 90 96 05 52 52 41
-2E 42 84 12 4A 96 40 11 9C 96 03 53 58 54 84 12
-4A 96 80 11 00 00 04 50 55 53 48 00 84 12 4A 96
-00 12 B6 96 06 50 55 53 48 2E 42 00 84 12 4A 96
-40 12 0A 96 04 43 41 4C 4C 00 84 12 4A 96 80 12
-2C 80 2C 00 A4 93 9E 94 EA 96 59 42 C4 21 5A 42
-C5 21 82 4A C4 21 BE 90 00 15 00 00 02 20 0A 89
-02 3C 09 8A 0A 49 3A 90 10 00 03 2C 5A 0E A8 3F
-1A 53 0E 4A 0D 12 87 12 5E 83 88 85 0D 6F 75 74
-20 6F 66 20 62 6F 75 6E 64 73 D4 89 C4 96 05 50
-55 53 48 4D 84 12 E0 96 00 15 2E 97 04 50 4F 50
-4D 00 84 12 E0 96 00 17 20 82 14 93 4E 97 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 92 53 CA 21
-3E 40 2C 00 87 12 0C 86 24 87 B0 81 70 8A 9E 94
-72 97 0A 4E 3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06
-6F 3F AA 96 04 52 52 43 4D 00 84 12 48 97 50 00
-84 97 04 52 52 41 4D 00 84 12 48 97 50 01 92 97
-04 52 4C 41 4D 00 84 12 48 97 50 02 A0 97 04 52
-52 55 4D 00 84 12 48 97 50 03 85 12 00 3C AE 97
-03 53 3E 3D 85 12 00 38 C0 97 02 53 3C 00 85 12
-00 34 3C 97 03 30 3E 3D 85 12 00 30 D4 97 02 30
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 80 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC 82 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 82 03 4B 45 59 30 40 B0 83
+18 42 8C 05 2F 83 8F 4E 00 00 B0 12 24 84 92 B3
+9C 05 FD 27 1E 42 8C 05 B0 12 36 84 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 83 06 41 43 43 45 50 54 00
+3C 40 92 84 3B 40 5C 84 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 84 92 B3 9C 05
+05 24 18 42 8C 05 38 90 0A 00 04 20 21 53 39 40
+4A 84 4D 15 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05
+D2 C3 03 02 30 41 B2 40 13 00 8E 05 D2 D3 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 84 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 8C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 9C 05 FD 27
+82 48 8E 05 30 4D 88 84 2D 83 92 B3 9C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C 83 04 45 4D 49 54 00
+30 40 B4 84 08 4E 3E 4F E0 3F AA 84 04 45 43 48
+4F 00 B2 40 82 48 80 84 82 43 DE 21 30 4D 5C 83
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 84 92 43
+DE 21 30 4D 0E 83 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 84 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 85 EF 3F 10 85
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 83 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 85 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 85 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 83 02 43
+52 00 30 40 56 85 0D 12 87 12 64 85 02 0D 0A 00
+24 85 22 80 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 85 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A 85 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA 84 82 53 22 00
+0D 12 87 12 2C 80 64 85 0C 88 94 85 2C 80 22 00
+E8 85 82 85 B6 85 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 84 82 2E
+22 00 0D 12 87 12 A0 85 2C 80 24 85 0C 88 22 80
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 80 34 40
+0C 80 30 4D 8C 81 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 87 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 87 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 82 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 84 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 81 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A 88 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C 80 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 85 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 88 20 82 E8 85 7E 88 3D 40
+86 88 E1 22 48 3E 88 88 0A 4E 3E 4F 3D 40 9E 88
+37 27 3D 40 78 88 1A E2 BE 21 B8 27 B2 23 A0 88
+3E 4F 3D 40 78 88 BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 8B CC 3F FA 87 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 88 DA 88 B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 81 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 85 05 0D 0A 6F 6B 20 24 85
+CE 83 EC 84 72 88 D6 80 68 81 64 85 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 89 2C 80 30 FF
+74 83 A4 81 64 85 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 89 38 82 EA 80 B0 81 06 89 64 85 05 0D
+0A 20 20 20 AC 81 0E 89 E8 83 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 90 B0 90 B2 40 4E 84
+4C 84 B2 40 B4 84 B2 84 B2 40 56 85 54 85 B2 40
+B0 83 AE 83 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 84 B0 12
+72 89 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05 D2 C3
+03 02 92 C3 9C 05 38 40 F0 FF 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 9C 05 F3 23 0D 12 87 12
+64 85 04 1B 5B 37 6D 00 24 85 2C 80 DE 21 EA 80
+4C 80 B0 81 06 8A 64 85 05 6C 69 6E 65 3A 24 85
+38 81 26 83 C2 84 24 85 64 85 04 1B 5B 30 6D 00
+24 85 2A 90 82 85 60 89 5A 89 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 85 2C 80 9C 89 0C 88 22 80
+40 86 01 27 0D 12 87 12 20 82 E8 85 46 86 B0 81
+44 8A 22 80 A8 88 3E 82 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 8A 01 5D
+B2 43 BE 21 30 4D 54 8A 83 5B 27 5D 0D 12 87 12
+34 8A 2C 80 2C 80 0C 88 0C 88 22 80 BE 4F 02 00
+3E 4F 30 4D 6E 83 82 49 53 00 0D 12 87 12 38 82
+EA 80 B0 81 A0 8A 6C 8A 2C 80 7C 8A 0C 88 22 80
+34 8A 7C 8A 22 80 86 8A 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C 85
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC 88 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 82 E8 85 46 86 4C 80
+B0 81 44 8A 68 81 B0 81 06 8B 2C 80 2C 80 0C 88
+0C 88 2C 80 0C 88 0C 88 22 80 82 9F BC 21 40 25
+0D 12 87 12 64 85 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 89 68 8A 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C 80 22 80 0C 88 0A 8B 56 8A
+22 80 2A 8B 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 8B BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 8B 01 3A 30 12
+64 8B 0D 12 87 12 C2 85 20 82 E8 85 8E 8B 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 8B 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 85 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 8B BA 40 86 12 FC FF DC 3C
+4E 88 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 8B
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 8B
+06 43 52 45 41 54 45 00 B0 12 82 8B BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 88 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 8C 05 44 45 46 45 52 B0 12 82 8B AC 3C
+A6 86 05 3E 42 4F 44 59 2E 52 30 4D 00 8C 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 8B
+86 5B 54 48 45 4E 5D 00 30 4D 80 8C 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 80 01 00 20 82 E8 85
+54 88 3C 80 B0 81 00 8D 82 80 82 80 64 85 04 5B
+49 46 5D 00 56 8C BA 81 C2 8C 46 85 2E 81 AC 81
+F8 8C 82 80 82 80 64 85 06 5B 45 4C 53 45 5D 00
+56 8C BA 81 E6 8C 46 85 38 81 3C 80 B0 81 F8 8C
+2E 81 AC 81 F8 8C 64 85 06 5B 54 48 45 4E 5D 00
+56 8C BA 81 F8 8C 38 81 4C 80 BA 81 9C 8C 22 80
+46 85 64 85 05 0D 0A 6B 6F 20 24 85 CE 83 62 88
+AC 81 9C 8C 8C 8C 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 8D 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 82 E8 85 46 86 64 80 22 80 26 8D
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 8D 5C 81 22 80 58 8D 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 88 06 4D 41 52 4B 45 52 00
+B0 12 82 8B BA 40 84 12 FC FF BA 40 56 8D FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 8A 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 81 00 00 2E 53 30 4D
+34 8C 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC 81 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 85 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E 8C 85 42 45 47 49 4E 30 40 74 83 E2 8D
+85 55 4E 54 49 4C 39 40 B0 81 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 8A
+85 41 47 41 49 4E 39 40 AC 81 EF 3F CA 8B 85 57
+48 49 4C 45 0D 12 87 12 A8 8D 70 80 22 80 C0 8A
+86 52 45 50 45 41 54 00 0D 12 87 12 26 8E E8 8D
+22 80 C2 8D 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 81 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 8D 84 4C 4F 4F
+50 00 39 40 E2 81 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 83
+85 2B 4C 4F 4F 50 39 40 D0 81 E5 3F 7C 8E 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 81 00 00 BA 40
+AC 81 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE 8E 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 8E 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 8C 2C 80 10 00 2C 80 00 00 C0 81
+2C 80 00 00 0C 88 E2 81 40 8F 74 83 2C 80 C8 21
+3C 80 EA 80 0C 88 F2 80 20 8C 2C 80 CA 21 F2 80
+22 80 32 8A 05 46 4F 52 54 48 84 12 5A 8F 88 99
+FE 92 FE 9A 64 8F 5A 92 B0 8E C6 9A F2 99 10 9A
+68 90 D4 9A 1A 9A 00 00 7C 99 5E 8A 06 9A 00 00
+20 8E 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA 8A 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE 85 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 8E
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A 8F C8 8F DC 8F EC 8F 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 8F
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 8F 56 92
+86 9B 40 8E 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 90 92 42 0C 18 30 90 EF 3F 20 90 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E 90 92 42
+C6 21 30 90 30 4D 34 90 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 8F 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 89 B2 40 86 9B 0C 18 B2 40
+56 92 0E 18 CC 3F 82 90 04 57 41 52 4D 00 30 40
+B2 90 1E 42 08 18 0D 12 87 12 64 85 06 0D 1B 5B
+37 6D 23 00 24 85 5E 83 64 85 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 85 2C 80 30 FF
+74 83 20 81 26 83 64 85 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 89 F4 8D 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 92 D3
+04 02 B2 40 FE FF 02 02 D2 D3 03 02 F2 43 22 02
+F2 D3 26 02 F2 D0 BF 00 47 02 F2 40 BF 00 43 02
+F2 40 40 00 45 02 F2 40 A5 00 A1 01 F2 40 20 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BE 00 82 01 B2 40 DC 02 84 01 39 40
+80 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 32 00 29 83 B9 40 14 91 CE FF FB 23 B2 40
+54 84 E2 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 80 36 40 B4 80 35 40 00 80 34 40 0C 80 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B2 21 02 04 20 38 E3 18 53 82 48 08 18 B2 40
+81 00 80 05 92 42 02 18 86 05 92 42 04 18 88 05
+F2 D0 0C 00 2B 02 92 C3 80 05 92 D3 9A 05 3D 40
+24 92 38 90 0A 00 38 27 38 90 16 00 35 2F 28 93
+0E 23 03 27 AE 90 92 8F 09 41 53 53 45 4D 42 4C
+45 52 84 12 5A 8F 56 98 C4 98 0A 98 2E 99 D0 97
+56 99 EA 94 00 00 C6 97 7A 98 28 98 68 98 FA 95
+00 00 00 00 66 99 8E 8F A4 8D 85 48 49 32 4C 4F
+0D 12 87 12 74 83 BC 8D 0C 88 56 8A 98 8F 32 92
+22 80 08 91 04 43 4F 44 45 00 B0 12 82 8B A2 82
+C6 21 0D 12 87 12 74 8B AC 81 6C 92 00 00 07 45
+4E 44 43 4F 44 45 0D 12 87 12 B2 8F 0A 8B 22 80
+28 92 03 41 53 4D 92 42 DA 21 E0 21 B2 40 36 92
+DA 21 E3 3F 8E 92 06 45 4E 44 41 53 4D 00 92 42
+E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
+C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
+C6 21 B2 43 BE 21 30 40 B2 8F 00 00 05 4C 4F 32
+48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 74 92 07 43
+4F 44 45 4E 4E 4D 0D 12 87 12 4C 8B 56 8A 10 93
+3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21 39 48
+2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A FC 27
+1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15 87 12
+E8 85 46 86 BA 81 50 93 00 87 B0 81 44 8A 72 93
+52 93 29 4E 39 90 86 12 02 20 2E 53 0A 3C 39 90
+85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12 01 20
+2E 52 1B 17 30 41 3E 40 28 00 B0 12 3C 93 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00 1C 15
+12 12 C4 21 92 53 C4 21 87 12 E8 85 00 87 B0 81
+AE 93 A4 93 21 53 3E 90 10 00 84 2D E2 2B B0 93
+B2 41 C4 21 DE 3F 0D 12 87 12 20 82 1A 93 C0 93
+0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F FA 90
+23 00 00 00 2D 20 92 53 C4 21 B0 12 3C 93 0E 93
+03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40 10 03
+1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92 03 20
+3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02 0D 3C
+3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41 30 4D
+FA 90 26 00 00 00 07 20 3C 40 10 02 92 53 C4 21
+B0 12 3C 93 EC 3F FA 90 40 00 00 00 16 20 3C 40
+20 00 92 53 C4 21 B0 12 8E 93 0C 20 3C 50 10 00
+3E 40 2B 00 B0 12 8E 93 92 92 C0 21 C4 21 02 24
+92 53 C4 21 8E 10 0C 5E D8 3F B0 12 8E 93 FA 23
+3C 50 10 00 B0 12 76 93 EF 3F 0D 12 87 12 20 82
+1A 93 94 94 FE 90 26 00 00 00 3E 40 20 00 03 20
+3C 50 82 00 CB 3F B0 12 8E 93 E5 23 3C 50 80 00
+B0 12 76 93 E0 3F 44 84 04 52 45 54 49 00 0D 12
+87 12 2C 80 00 13 0C 88 22 80 2C 80 2C 00 B6 93
+8A 94 D4 94 2E 4E 0E DC 09 4B A5 3F EC 92 03 4D
+4F 56 84 12 CA 94 00 40 DE 94 05 4D 4F 56 2E 42
+84 12 CA 94 40 40 00 00 03 41 44 44 84 12 CA 94
+00 50 F8 94 05 41 44 44 2E 42 84 12 CA 94 40 50
+04 95 04 41 44 44 43 00 84 12 CA 94 00 60 12 95
+06 41 44 44 43 2E 42 00 84 12 CA 94 40 60 B8 94
+04 53 55 42 43 00 84 12 CA 94 00 70 30 95 06 53
+55 42 43 2E 42 00 84 12 CA 94 40 70 3E 95 03 53
+55 42 84 12 CA 94 00 80 4E 95 05 53 55 42 2E 42
+84 12 CA 94 40 80 C8 92 03 43 4D 50 84 12 CA 94
+00 90 68 95 05 43 4D 50 2E 42 84 12 CA 94 40 90
+B6 92 04 44 41 44 44 00 84 12 CA 94 00 A0 82 95
+06 44 41 44 44 2E 42 00 84 12 CA 94 40 A0 74 95
+03 42 49 54 84 12 CA 94 00 B0 A0 95 05 42 49 54
+2E 42 84 12 CA 94 40 B0 AC 95 03 42 49 43 84 12
+CA 94 00 C0 BA 95 05 42 49 43 2E 42 84 12 CA 94
+40 C0 C6 95 03 42 49 53 84 12 CA 94 00 D0 D4 95
+05 42 49 53 2E 42 84 12 CA 94 40 D0 00 00 03 58
+4F 52 84 12 CA 94 00 E0 EE 95 05 58 4F 52 2E 42
+84 12 CA 94 40 E0 20 95 03 41 4E 44 84 12 CA 94
+00 F0 08 96 05 41 4E 44 2E 42 84 12 CA 94 40 F0
+20 82 B6 93 26 96 0A 4C 3C F0 70 00 8A 10 3A F0
+0F 00 0C DA 4F 3F 5A 95 03 52 52 43 84 12 20 96
+00 10 38 96 05 52 52 43 2E 42 84 12 20 96 40 10
+44 96 04 53 57 50 42 00 84 12 20 96 80 10 52 96
+03 52 52 41 84 12 20 96 00 11 60 96 05 52 52 41
+2E 42 84 12 20 96 40 11 6C 96 03 53 58 54 84 12
+20 96 80 11 00 00 04 50 55 53 48 00 84 12 20 96
+00 12 86 96 06 50 55 53 48 2E 42 00 84 12 20 96
+40 12 E0 95 04 43 41 4C 4C 00 84 12 20 96 80 12
+1A 53 0E 4A 0D 12 87 12 5E 83 64 85 0D 6F 75 74
+20 6F 66 20 62 6F 75 6E 64 73 A8 89 20 82 1A 93
+D2 96 0C 43 1B 42 C6 21 A2 53 C6 21 92 53 C4 21
+3E 40 2C 00 1C 15 87 12 E8 85 00 87 B0 81 44 8A
+F2 96 1B 17 87 12 8A 94 FA 96 0A 4E 3E 4F 1A 83
+D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28 0C 8A
+08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92 C8 2F
+8A 10 5A 06 86 3F 7A 96 04 52 52 43 4D 00 84 12
+CC 96 50 00 28 97 04 52 52 41 4D 00 84 12 CC 96
+50 01 36 97 04 52 4C 41 4D 00 84 12 CC 96 50 02
+44 97 04 52 52 55 4D 00 84 12 CC 96 50 03 94 96
+05 50 55 53 48 4D 84 12 CC 96 00 15 60 97 04 50
+4F 50 4D 00 84 12 CC 96 00 17 85 12 00 3C 52 97
+03 53 3E 3D 85 12 00 38 80 97 02 53 3C 00 85 12
+00 34 6E 97 03 30 3E 3D 85 12 00 30 94 97 02 30
 3C 00 85 12 00 30 00 00 02 55 3C 00 85 12 00 2C
-E8 97 03 55 3E 3D 85 12 00 28 DE 97 03 30 3C 3E
-85 12 00 24 FC 97 02 30 3D 00 85 12 00 20 58 84
-02 49 46 00 1A 42 CC 21 8A 4E 00 00 A2 53 CC 21
-0E 4A 30 4D F2 97 04 54 48 45 4E 00 1A 42 CC 21
+A8 97 03 55 3E 3D 85 12 00 28 9E 97 03 30 3C 3E
+85 12 00 24 BC 97 02 30 3D 00 85 12 00 20 00 00
+02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53 C6 21
+0E 4A 30 4D B2 97 04 54 48 45 4E 00 1A 42 C6 21
 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90 00 02
-68 2F 88 DA 00 00 30 4D BA 95 04 45 4C 53 45 00
-1A 42 CC 21 BA 40 00 3C 00 00 A2 53 CC 21 2F 83
-8F 4A 00 00 E3 3F 26 98 05 55 4E 54 49 4C 3A 4F
-08 4E 3E 4F 19 42 CC 21 2A 83 0A 89 0A 11 3A 90
-00 FE 47 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
-CC 21 30 4D 3E 96 05 41 47 41 49 4E 0D 12 87 12
-BA 97 6E 98 22 80 00 00 05 57 48 49 4C 45 0D 12
-87 12 14 98 70 80 22 80 CA 97 06 52 45 50 45 41
-54 00 0D 12 87 12 BA 97 6E 98 2C 98 22 80 D0 98
-3D 41 08 4E 3E 4F 2A 48 0A 93 04 20 98 42 CC 21
-00 00 30 4D 88 43 00 00 C3 3F D4 96 03 42 57 31
-84 12 CE 98 00 00 EC 98 03 42 57 32 84 12 CE 98
-00 00 F8 98 03 42 57 33 84 12 CE 98 00 00 10 99
-3D 41 1A 42 CC 21 28 4E 08 93 08 20 BA 4F 00 00
-A2 53 CC 21 8E 4A 00 00 3E 4F 30 4D 8E 43 00 00
-80 3F 00 00 03 46 57 31 84 12 0E 99 00 00 34 99
-03 46 57 32 84 12 0E 99 00 00 40 99 03 46 57 33
-84 12 0E 99 00 00 3E 90 00 30 07 24 3E E0 00 04
-3E B0 00 10 02 24 3E E0 00 08 30 4D 4C 99 04 47
-4F 54 4F 00 0D 12 87 12 BA 97 60 8A 26 88 22 80
-00 00 05 3F 47 4F 54 4F 0D 12 87 12 56 99 60 8A
-26 88 22 80 00 00 03 4A 4D 50 0D 12 87 12 60 8A
-9C 98 22 80 82 99 04 3F 4A 4D 50 00 0D 12 87 12
-56 99 60 8A 70 80 6E 98 22 80 42 8D 07 7B 54 4F
-4F 4C 53 7D 30 4D BA 92 03 41 4E 44 3E FF 30 4D
-C6 8F 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
+58 2F 88 DA 00 00 30 4D 90 95 04 45 4C 53 45 00
+1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21 2F 83
+8F 4A 00 00 E3 3F E6 97 05 55 4E 54 49 4C 3A 4F
+08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11 3A 90
+00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
+C6 21 30 4D 14 96 05 41 47 41 49 4E 0D 12 87 12
+7A 97 2E 98 22 80 00 00 05 57 48 49 4C 45 0D 12
+87 12 D4 97 70 80 22 80 8A 97 06 52 45 50 45 41
+54 00 0D 12 87 12 7A 97 2E 98 EC 97 22 80 90 98
+3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43 00 00
+C7 23 98 42 C6 21 00 00 30 4D A4 96 03 42 57 31
+84 12 8E 98 E2 21 AC 98 03 42 57 32 84 12 8E 98
+E4 21 B8 98 03 42 57 33 84 12 8E 98 E6 21 D0 98
+3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00 08 93
+88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00 3E 4F
+30 4D 00 00 03 46 57 31 84 12 CE 98 E8 21 F4 98
+03 46 57 32 84 12 CE 98 EA 21 00 99 03 46 57 33
+84 12 CE 98 EC 21 3E 90 00 30 07 24 3E E0 00 04
+3E B0 00 10 02 24 3E E0 00 08 30 4D 0C 99 04 47
+4F 54 4F 00 0D 12 87 12 7A 97 34 8A 02 88 22 80
+00 00 05 3F 47 4F 54 4F 0D 12 87 12 16 99 34 8A
+02 88 22 80 00 00 03 4A 4D 50 0D 12 87 12 34 8A
+5C 98 22 80 42 99 04 3F 4A 4D 50 00 0D 12 87 12
+16 99 34 8A 70 80 2E 98 22 80 40 8D 07 7B 54 4F
+4F 4C 53 7D 30 4D A2 92 03 41 4E 44 3E FF 30 4D
+C2 8F 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
 FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80 06 00
-2E 8F 0E 11 0D 12 87 12 2C 80 3C 00 D2 84 5E 83
-2C 80 08 00 D2 84 2C 80 3E 00 D2 84 08 85 82 80
-82 80 8E 81 BA 81 1E 9A 5A 80 5A 80 22 80 C0 81
-F8 81 EA 80 26 83 2C 80 02 00 D0 81 20 9A 22 80
-D2 99 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
-E0 20 D2 3F CA 86 01 3F 2E 4E 30 40 26 83 52 90
-03 50 41 44 85 12 E4 20 0E 91 05 57 4F 52 44 53
-0D 12 87 12 84 85 2C 80 03 00 1E 85 2C 80 D0 21
-EA 80 54 9A 2C 80 10 00 3C 80 18 81 F6 8E 2C 80
+2E 8F 0E 11 0D 12 87 12 2C 80 3C 00 B0 84 5E 83
+2C 80 08 00 B0 84 2C 80 3E 00 B0 84 EC 84 82 80
+82 80 8E 81 BA 81 DE 99 5A 80 5A 80 22 80 C0 81
+F8 81 EA 80 26 83 2C 80 02 00 D0 81 E0 99 22 80
+92 99 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
+E0 20 D2 3F 42 8C 01 3F 2E 4E 30 40 26 83 4E 90
+03 50 41 44 85 12 E4 20 A8 90 05 57 4F 52 44 53
+0D 12 87 12 52 85 2C 80 03 00 02 85 2C 80 CA 21
+EA 80 14 9A 2C 80 10 00 3C 80 18 81 F2 8E 2C 80
 00 00 3C 80 2C 80 10 00 3C 80 18 81 2C 80 00 00
-C0 81 3C 80 F8 81 54 9A 18 81 EA 80 A4 81 B0 81
-B0 9A 5A 80 5A 80 F8 81 3C 80 54 9A 18 81 EA 80
-2C 80 02 00 D0 81 92 9A 4C 80 B0 81 F2 9A 3C 80
-2C 80 02 00 20 81 EA 80 92 80 54 9A 18 81 F2 80
-3C 80 78 88 2C 80 7F 00 CC 99 40 85 00 81 2C 80
-0F 00 CC 99 2C 80 10 00 70 80 20 81 1E 85 AC 81
-7E 9A 5A 80 22 80 F0 8E 03 4D 41 58 2E 9F 07 38
-2F 53 30 4D F8 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F
-30 4D 04 8E 03 55 2E 52 0D 12 87 12 A8 80 42 82
+C0 81 3C 80 F8 81 14 9A 18 81 EA 80 A4 81 B0 81
+70 9A 5A 80 5A 80 F8 81 3C 80 14 9A 18 81 EA 80
+2C 80 02 00 D0 81 52 9A 4C 80 B0 81 B2 9A 3C 80
+2C 80 02 00 20 81 EA 80 92 80 14 9A 18 81 F2 80
+3C 80 54 88 2C 80 7F 00 8C 99 24 85 00 81 2C 80
+0F 00 8C 99 2C 80 10 00 70 80 20 81 02 85 AC 81
+3E 9A 5A 80 22 80 EC 8E 03 4D 41 58 2E 9F 07 38
+2F 53 30 4D B8 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F
+30 4D 00 8E 03 55 2E 52 0D 12 87 12 A8 80 42 82
 2C 80 00 00 A2 82 D4 82 F0 82 B4 80 82 80 20 81
-2C 80 00 00 FC 9A 1E 85 40 85 22 80 D4 8F 04 44
-55 4D 50 00 0D 12 12 12 E2 21 B2 40 10 00 E2 21
+2C 80 00 00 BC 9A 02 85 24 85 22 80 D0 8F 04 44
+55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00 DC 21
 2E 5F 87 12 70 80 82 80 82 80 26 83 2C 80 01 00
-20 81 26 83 2C 80 FE FF CC 99 C0 81 84 85 F8 81
-2C 80 07 00 18 9B 08 85 F8 81 2C 80 10 00 18 81
-F8 81 C0 81 F8 81 00 81 2C 80 03 00 18 9B E2 81
-84 9B 08 85 08 85 F8 81 2C 80 10 00 18 81 F8 81
-C0 81 F8 81 00 81 2C 80 7E 00 0A 9B 20 82 FC 9A
-D2 84 E2 81 A2 9B 2C 80 10 00 D0 81 6C 9B B4 80
+20 81 26 83 2C 80 FE FF 8C 99 C0 81 52 85 F8 81
+2C 80 07 00 D8 9A EC 84 F8 81 2C 80 10 00 18 81
+F8 81 C0 81 F8 81 00 81 2C 80 03 00 D8 9A E2 81
+44 9B EC 84 EC 84 F8 81 2C 80 10 00 18 81 F8 81
+C0 81 F8 81 00 81 2C 80 7E 00 CA 9A 20 82 BC 9A
+B0 84 E2 81 62 9B 2C 80 10 00 D0 81 2C 9B B4 80
 2C 82 F2 80 22 80
 @FFFE
-26 91
+14 91
 q
index 24cb97d..85b6215 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 60 84 C0 5D 60 EA 05 00 18 00 B6 9B 5E 92
-2C 84 38 84 00 00 00 00
+10 00 04 00 00 00 C0 5D 05 00 18 00 86 9B 56 92
+24 84 36 84 00 00 00 00 00 00
+@2400
+00 00
 @8000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 81 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 81 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 81 02 42 4C 00
-85 12 20 00 1C 82 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C 82 04 42 41 53 45 00 85 12 DC 21
 C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA 81 06 55 4D 2F
 4D 4F 44 00 30 12 5A 80 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 80 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 82
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 82 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 82 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 82
 02 23 53 00 0D 12 87 12 A2 82 DC 82 2D 83 09 93
@@ -53,399 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 82 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 82 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 82 02 55 2E 00 0D 12 87 12 42 82 2C 80 00 00
-D4 82 F0 82 34 85 FC 84 22 80 3E 81 02 44 2E 00
+D4 82 F0 82 24 85 EC 84 22 80 3E 81 02 44 2E 00
 0D 12 87 12 42 82 70 80 82 80 44 81 D4 82 92 80
-14 83 F0 82 34 85 FC 84 22 80 7C 80 01 2E 0E 93
+14 83 F0 82 24 85 EC 84 22 80 7C 80 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 83 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 80 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC 82 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E 83 05 28 4B 45 59 29 18 42
-8C 05 2F 83 8F 4E 00 00 B0 12 2C 84 92 B3 9C 05
-FD 27 1E 42 8C 05 B0 12 38 84 30 4D 08 82 03 4B
-45 59 30 40 AE 83 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 83
-06 41 43 43 45 50 54 00 3C 40 98 84 3B 40 68 84
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C 84 92 B3 9C 05 05 24 18 42 8C 05 38 90
-0A 00 04 20 21 53 39 40 4C 84 4D 15 B2 40 11 00
-8E 05 D2 C3 03 02 30 41 B2 40 13 00 8E 05 D2 D3
-03 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A 84
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 8C 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 8E 05 30 4D 8E 84 2D 83
-92 B3 9C 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 21 02 24 92 53 E4 21 3E 8F 3D 41 30 4D A8 83
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C 83
-04 45 4D 49 54 00 30 40 B8 84 C0 84 04 45 43 48
-4F 00 B2 40 82 48 86 84 82 43 E4 21 30 4D 5C 83
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 84 92 43
-E4 21 30 4D 0E 83 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 84 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E 85 EF 3F 20 85
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 80 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC 82 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 82 03 4B 45 59 30 40 B0 83
+18 42 8C 05 2F 83 8F 4E 00 00 B0 12 24 84 92 B3
+9C 05 FD 27 1E 42 8C 05 B0 12 36 84 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 83 06 41 43 43 45 50 54 00
+3C 40 92 84 3B 40 5C 84 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 84 92 B3 9C 05
+05 24 18 42 8C 05 38 90 0A 00 04 20 21 53 39 40
+4A 84 4D 15 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05
+D2 C3 03 02 30 41 B2 40 13 00 8E 05 D2 D3 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 84 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 8C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 9C 05 FD 27
+82 48 8E 05 30 4D 88 84 2D 83 92 B3 9C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C 83 04 45 4D 49 54 00
+30 40 B4 84 08 4E 3E 4F E0 3F AA 84 04 45 43 48
+4F 00 B2 40 82 48 80 84 82 43 DE 21 30 4D 5C 83
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 84 92 43
+DE 21 30 4D 0E 83 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 84 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 85 EF 3F 10 85
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 83 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A 85 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C 85 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 84 04 28
-43 52 29 00 0D 12 87 12 7C 85 02 0D 0A 00 34 85
-22 80 92 83 02 43 52 00 30 40 64 85 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 85 07 43 41 50 53 5F 4F 4E B2 43 B4 21 30 4D
-92 85 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 21
-30 4D 0A 85 82 53 22 00 0D 12 87 12 2C 80 7C 85
-24 88 AC 85 2C 80 22 00 00 86 9A 85 CE 85 3D 41
-6E 4E 1E 83 82 5E CC 21 3E 4F 92 B3 CC 21 A2 63
-CC 21 30 4D E0 84 82 2E 22 00 0D 12 87 12 B8 85
-2C 80 34 85 24 88 22 80 00 00 04 57 4F 52 44 00
-3C 40 C6 21 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 21 F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 21 82 4A CA 21 1E 42 CC 21 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 21 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 80 34 40 0C 80 30 4D 8C 81 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 21 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 21 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 87 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A 87 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 82
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 21 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC 84 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E 81 01 2C 1A 42 CC 21 A2 53 CC 21 8A 4E 00 00
-3E 4F 30 4D 22 88 87 4C 49 54 45 52 41 4C 82 93
-BE 21 0F 24 1A 42 CC 21 A2 52 CC 21 BA 40 2C 80
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 85 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 21 82 4E
-C6 21 B2 4F C8 21 3E 4F 30 4D 0D 12 87 12 7A 88
-20 82 00 86 96 88 3D 40 9E 88 E1 22 44 3E A0 88
-0A 4E 3E 4F 3D 40 B6 88 37 27 3D 40 90 88 1A E2
-BE 21 B8 27 B2 23 B8 88 3E 4F 3D 40 90 88 BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 8B CC 3F 12 88 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 21 3C 49 3B 49 3A 49 3D 15 87 12 8A 88
-F2 88 B2 41 CA 21 B2 41 C8 21 B2 41 C6 21 3D 41
-30 4D 94 81 04 51 55 49 54 00 31 40 E0 20 B2 40
-00 20 00 20 82 43 BE 21 82 43 08 18 87 12 7C 85
-05 0D 0A 6F 6B 20 34 85 D6 83 FC 84 8A 88 D6 80
-68 81 7C 85 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC 89 2C 80 30 FF 74 83 A4 81 7C 85 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC 89 38 82 EA 80
-B0 81 1E 89 7C 85 05 0D 0A 20 20 20 AC 81 26 89
-F0 83 05 41 42 4F 52 54 3F 40 80 20 C6 3F B2 40
-AC 90 0A 91 B2 40 5A 84 4E 84 B2 40 B8 84 C8 84
-B2 40 64 85 7A 85 B2 40 AE 83 D4 83 82 43 E4 98
-82 43 F0 98 82 43 FC 98 82 43 2C 99 82 43 38 99
-82 43 44 99 B2 40 0A 00 E2 21 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 84 B0 12
-8A 89 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05 D2 C3
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 85 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 85 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 83 02 43
+52 00 30 40 56 85 0D 12 87 12 64 85 02 0D 0A 00
+24 85 22 80 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 85 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A 85 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA 84 82 53 22 00
+0D 12 87 12 2C 80 64 85 0C 88 94 85 2C 80 22 00
+E8 85 82 85 B6 85 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 84 82 2E
+22 00 0D 12 87 12 A0 85 2C 80 24 85 0C 88 22 80
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 80 34 40
+0C 80 30 4D 8C 81 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 87 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 87 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 82 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 84 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 81 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A 88 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C 80 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 85 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 88 20 82 E8 85 7E 88 3D 40
+86 88 E1 22 48 3E 88 88 0A 4E 3E 4F 3D 40 9E 88
+37 27 3D 40 78 88 1A E2 BE 21 B8 27 B2 23 A0 88
+3E 4F 3D 40 78 88 BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 8B CC 3F FA 87 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 88 DA 88 B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 81 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 85 05 0D 0A 6F 6B 20 24 85
+CE 83 EC 84 72 88 D6 80 68 81 64 85 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 89 2C 80 30 FF
+74 83 A4 81 64 85 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 89 38 82 EA 80 B0 81 06 89 64 85 05 0D
+0A 20 20 20 AC 81 0E 89 E8 83 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 90 B0 90 B2 40 4E 84
+4C 84 B2 40 B4 84 B2 84 B2 40 56 85 54 85 B2 40
+B0 83 AE 83 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 84 B0 12
+72 89 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05 D2 C3
 03 02 92 C3 9C 05 38 40 F0 FF 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 9C 05 F3 23 0D 12 87 12
-7C 85 04 1B 5B 37 6D 00 34 85 2C 80 E4 21 EA 80
-4C 80 B0 81 26 8A 7C 85 05 6C 69 6E 65 3A 34 85
-38 81 26 83 D2 84 34 85 7C 85 04 1B 5B 30 6D 00
-34 85 22 90 9A 85 78 89 72 89 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 85 2C 80 BC 89 24 88 22 80
-58 86 01 27 0D 12 87 12 20 82 00 86 5E 86 B0 81
-64 8A 22 80 C0 88 3E 82 81 5C 92 42 C6 21 CA 21
-30 4D 00 00 81 5B 82 43 BE 21 30 4D 68 8A 01 5D
-B2 43 BE 21 30 4D 74 8A 83 5B 27 5D 0D 12 87 12
-54 8A 2C 80 2C 80 24 88 24 88 22 80 BE 4F 02 00
-3E 4F 30 4D 5E 85 82 49 53 00 0D 12 87 12 38 82
-EA 80 B0 81 C0 8A 8C 8A 2C 80 9C 8A 24 88 22 80
-54 8A 9C 8A 22 80 A6 8A 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D B4 85
-87 52 45 43 55 52 53 45 19 42 CC 21 99 42 BA 21
-00 00 A2 53 CC 21 30 4D 04 89 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 82 00 86 5E 86 4C 80
-B0 81 64 8A 68 81 B0 81 26 8B 2C 80 2C 80 24 88
-24 88 2C 80 24 88 24 88 22 80 82 9F BC 21 2C 25
-0D 12 87 12 7C 85 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 89 88 8A 81 3B 82 93 BE 21
-8C 27 0D 12 87 12 2C 80 22 80 24 88 2A 8B 76 8A
-22 80 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 21 82 4F BC 21 30 4D 4A 8B 01 3A 30 12 62 8B
-0D 12 87 12 DA 85 20 82 00 86 8C 8B 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 21 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 21 82 49 B8 21 82 4A
-BA 21 2A 52 82 4A CC 21 30 41 FA 85 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 8B BA 40 86 12 FC FF
-DF 3C 66 88 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 8B BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 8B 06 43 52 45 41 54 45 00 B0 12 80 8B BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 88 05 44 4F 45
-53 3E 1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C 8C 05 44 45 46 45 52 B0 12 80 8B
-BA 40 30 40 FC FF BA 40 22 8C FE FF A9 3C F2 8B
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A 8B 86 5B 54 48 45 4E 5D 00 30 4D 72 8C 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C 80 01 00 20 82
-00 86 6C 88 3C 80 B0 81 F2 8C 82 80 82 80 7C 85
-04 5B 49 46 5D 00 48 8C BA 81 B4 8C 56 85 2E 81
-AC 81 EA 8C 82 80 82 80 7C 85 06 5B 45 4C 53 45
-5D 00 48 8C BA 81 D8 8C 56 85 38 81 3C 80 B0 81
-EA 8C 2E 81 AC 81 EA 8C 7C 85 06 5B 54 48 45 4E
-5D 00 48 8C BA 81 EA 8C 38 81 4C 80 BA 81 8E 8C
-22 80 56 85 7C 85 05 0D 0A 6B 6F 20 34 85 D6 83
-7A 88 AC 81 8E 8C 7E 8C 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 8D 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 82 00 86 5E 86 64 80
-5C 81 22 80 18 8D 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 82 00 86 5E 86 64 80 22 80 50 8D
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 88
-06 4D 41 52 4B 45 52 00 B0 12 80 8B BA 40 84 12
-FC FF BA 40 4E 8D FE FF 9A 42 CE 21 00 00 28 83
-8A 48 02 00 A2 52 CC 21 18 42 B6 21 19 42 B8 21
-A8 49 FE FF 89 48 00 00 30 4D C8 8A 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 21 A2 52 CC 21 BE 40
-B0 81 00 00 2E 53 30 4D 26 8C 84 45 4C 53 45 00
-A2 52 CC 21 1A 42 CC 21 BA 40 AC 81 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E 85 84 54 48 45 4E 00
-9E 42 CC 21 00 00 3E 4F 30 4D 40 8C 85 42 45 47
-49 4E 30 40 74 83 DA 8D 85 55 4E 54 49 4C 39 40
-B0 81 A2 52 CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A 8A 85 41 47 41 49 4E 39 40
-AC 81 EF 3F BC 8B 85 57 48 49 4C 45 0D 12 87 12
-A0 8D 70 80 22 80 E0 8A 86 52 45 50 45 41 54 00
-0D 12 87 12 1E 8E E0 8D 22 80 BA 8D 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 21 1E 42 CC 21 BE 40
-C0 81 FE FF A2 53 00 20 1A 42 00 20 8A 43 00 00
-30 4D 60 8D 84 4C 4F 4F 50 00 39 40 E2 81 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 1E 42
-00 20 A2 83 00 20 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE 83 85 2B 4C 4F 4F 50 39 40
-D0 81 E5 3F 74 8E 85 4C 45 41 56 45 1A 42 CC 21
-BA 40 F2 81 00 00 BA 40 AC 81 02 00 B2 50 06 00
-CC 21 A2 53 00 20 2A 52 19 42 00 20 89 4A 00 00
-30 4D B6 8E 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 8E 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA 8B 2C 80
-10 00 2C 80 00 00 C0 81 2C 80 00 00 24 88 E2 81
-38 8F 74 83 2C 80 CE 21 3C 80 EA 80 24 88 F2 80
-12 8C 2C 80 D0 21 F2 80 22 80 52 8A 05 46 4F 52
-54 48 84 12 52 8F B8 99 7C 92 2E 9B 5C 8F 62 92
-A8 8E F6 9A 22 9A 40 9A 60 90 04 9B 4A 9A 00 00
-AC 99 7E 8A 36 9A 00 00 18 8E 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 21 38 40 D2 21 B5 3F FA 8A
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 21 38 40 D0 21 A2 3F E6 85 04 4F 4E 4C 59 00
-82 43 D2 21 30 4D 4C 8E 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 21 E0 21 30 4D 62 8F C0 8F
-D4 8F E4 8F 3A 4E 82 4A CE 21 2E 4E 82 4E CC 21
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 8F 09 50 57 52 5F 53 54 41
-54 45 84 12 DC 8F 5E 92 B6 9B 38 8E 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 90 92 42 0C 18
-28 90 EF 3F 18 90 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 21 26 90 92 42 CC 21 28 90 30 4D 2C 90
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 21 0E 18
-92 42 CC 21 0C 18 EC 3F 1C 8F 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 CE FF FA 23
-B0 12 7E 89 B2 40 B6 9B 0C 18 B2 40 5E 92 0E 18
-CA 3F 9C 8D 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C 85 06 0D 1B 5B 37 6D 23 00 34 85
-5E 83 7C 85 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 85 2C 80 30 FF 74 83 20 81 26 83
-7C 85 0B 62 79 74 65 73 20 66 72 65 65 20 CE 89
-7A 90 04 57 41 52 4D 00 30 40 AC 90 EC 8D 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A CC 01
-B2 43 06 02 92 D3 04 02 B2 40 FE FF 02 02 D2 D3
-03 02 F2 43 22 02 F2 D3 26 02 F2 D0 BF 00 47 02
-F2 40 BF 00 43 02 F2 40 40 00 45 02 F2 40 A5 00
-A1 01 F2 40 20 00 A0 01 D2 43 A1 01 B2 40 00 A5
-60 01 B2 40 FF 1E 80 01 B2 40 BE 00 82 01 B2 40
-DC 02 84 01 39 40 80 01 82 43 88 01 92 D2 5E 01
-08 18 A2 93 08 18 01 24 49 07 38 40 59 14 18 83
-FE 23 19 83 FA 23 3A 40 1A 91 39 40 CE FF 89 4A
-00 00 29 53 FC 23 92 42 02 18 E2 FF B2 40 18 00
-0A 18 39 40 00 20 89 43 00 00 29 53 39 90 FF 2F
-FA 2B 31 40 E0 20 3F 40 80 20 37 40 22 80 36 40
-B4 80 35 40 00 80 34 40 0C 80 B2 40 0A 00 E2 21
-B2 43 B4 21 92 C3 30 01 18 42 08 18 F2 B2 21 02
-04 20 38 E3 18 53 82 48 08 18 B2 40 81 00 80 05
-A2 42 86 05 82 43 88 05 F2 D0 0C 00 2B 02 92 C3
-80 05 92 D3 9A 05 3D 40 2C 92 38 90 0A 00 30 27
-38 90 16 00 2D 2F 28 93 06 23 FB 26 08 91 8A 8F
-09 41 53 53 45 4D 42 4C 45 52 84 12 52 8F 86 98
-F4 98 3A 98 5E 99 00 98 86 99 04 95 00 00 F6 97
-AA 98 58 98 98 98 14 96 00 00 00 00 96 99 86 8F
-A4 90 85 48 49 32 4C 4F 0D 12 87 12 74 83 B4 8D
-24 88 76 8A 90 8F 3A 92 22 80 0E 91 04 43 4F 44
-45 00 B0 12 80 8B A2 82 CC 21 0D 12 87 12 72 8B
-AC 81 74 92 00 00 07 45 4E 44 43 4F 44 45 0D 12
-87 12 AA 8F 2A 8B 22 80 30 92 03 41 53 4D 92 42
-E0 21 C0 21 B2 40 3E 92 E0 21 E3 3F 96 92 06 45
-4E 44 41 53 4D 00 92 42 C0 21 E0 21 E8 3F 00 00
-05 43 4F 4C 4F 4E 1A 42 CC 21 BA 40 0D 12 00 00
-BA 40 87 12 02 00 A2 52 CC 21 B2 43 BE 21 30 40
-AA 8F 00 00 05 4C 4F 32 48 49 A2 83 CC 21 1A 42
-CC 21 EE 3F 38 40 C6 21 39 48 2A 48 09 5A 1A 52
-CA 21 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
-82 4A CA 21 30 4D 87 12 00 86 5E 86 BA 81 38 93
-18 87 B0 81 64 8A 5A 93 3A 93 29 4E 39 90 86 12
-02 20 2E 53 30 41 39 90 85 12 03 20 1E 4E 02 00
-30 41 39 90 84 12 01 20 2E 52 30 41 19 42 CC 21
-A2 53 CC 21 89 4E 00 00 3E 40 29 00 12 12 CA 21
-92 53 CA 21 87 12 00 86 18 87 B0 81 8A 93 80 93
-21 53 3E 90 10 00 BE 2D 30 41 8C 93 B2 41 CA 21
-22 D3 30 41 0D 12 87 12 20 82 04 93 9E 93 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 0A 4E 3E 4F
-FA 90 23 00 00 00 34 20 92 53 CA 21 B0 12 26 93
-0E 93 04 20 B2 40 00 03 C4 21 27 3C 1E 93 04 20
-B2 40 10 03 C4 21 21 3C 2E 93 04 20 B2 40 20 03
-C4 21 1B 3C 2E 92 04 20 B2 40 20 02 C4 21 15 3C
-3E 92 04 20 B2 40 30 02 C4 21 0F 3C 3E 93 04 20
-B2 40 30 03 C4 21 09 3C B2 40 30 00 C4 21 19 42
-CC 21 A2 53 CC 21 89 4E 00 00 3E 4F 3D 41 30 4D
-FA 90 26 00 00 00 08 20 B2 40 10 02 C4 21 92 53
-CA 21 B0 12 26 93 EB 3F FA 90 40 00 00 00 1A 20
-B2 40 20 00 C4 21 92 53 CA 21 B0 12 6C 93 0E 20
-B2 50 10 00 C4 21 3E 40 2B 00 B0 12 6C 93 33 24
-92 92 C6 21 CA 21 02 24 92 53 CA 21 8E 10 82 5E
-C4 21 D3 3F B0 12 6C 93 F9 23 B2 50 10 00 C4 21
-3E 40 28 00 B0 12 26 93 B0 12 5C 93 E8 3F 0D 12
-87 12 20 82 04 93 98 94 FE 90 26 00 00 00 3E 40
-20 00 04 20 B2 50 82 00 C4 21 C1 3F B0 12 6C 93
-DE 23 B2 50 80 00 C4 21 3E 40 28 00 B0 12 26 93
-B0 12 5C 93 D4 23 3D 40 64 8A 30 4D 46 84 04 52
-45 54 49 00 0D 12 87 12 2C 80 00 13 24 88 22 80
-2C 80 2C 00 94 93 8E 94 EA 94 2E 4E 1E D2 C4 21
-19 42 C2 21 90 3F F4 92 03 4D 4F 56 84 12 E0 94
-00 40 F8 94 05 4D 4F 56 2E 42 84 12 E0 94 40 40
-00 00 03 41 44 44 84 12 E0 94 00 50 12 95 05 41
-44 44 2E 42 84 12 E0 94 40 50 1E 95 04 41 44 44
-43 00 84 12 E0 94 00 60 2C 95 06 41 44 44 43 2E
-42 00 84 12 E0 94 40 60 CE 94 04 53 55 42 43 00
-84 12 E0 94 00 70 4A 95 06 53 55 42 43 2E 42 00
-84 12 E0 94 40 70 58 95 03 53 55 42 84 12 E0 94
-00 80 68 95 05 53 55 42 2E 42 84 12 E0 94 40 80
-D0 92 03 43 4D 50 84 12 E0 94 00 90 82 95 05 43
-4D 50 2E 42 84 12 E0 94 40 90 BE 92 04 44 41 44
-44 00 84 12 E0 94 00 A0 9C 95 06 44 41 44 44 2E
-42 00 84 12 E0 94 40 A0 8E 95 03 42 49 54 84 12
-E0 94 00 B0 BA 95 05 42 49 54 2E 42 84 12 E0 94
-40 B0 C6 95 03 42 49 43 84 12 E0 94 00 C0 D4 95
-05 42 49 43 2E 42 84 12 E0 94 40 C0 E0 95 03 42
-49 53 84 12 E0 94 00 D0 EE 95 05 42 49 53 2E 42
-84 12 E0 94 40 D0 00 00 03 58 4F 52 84 12 E0 94
-00 E0 08 96 05 58 4F 52 2E 42 84 12 E0 94 40 E0
-3A 95 03 41 4E 44 84 12 E0 94 00 F0 22 96 05 41
-4E 44 2E 42 84 12 E0 94 40 F0 20 82 94 93 40 96
-1A 42 C4 21 B2 F0 70 00 C4 21 8A 10 3A F0 0F 00
-82 DA C4 21 4A 3F 74 95 03 52 52 43 84 12 3A 96
-00 10 58 96 05 52 52 43 2E 42 84 12 3A 96 40 10
-64 96 04 53 57 50 42 00 84 12 3A 96 80 10 72 96
-03 52 52 41 84 12 3A 96 00 11 80 96 05 52 52 41
-2E 42 84 12 3A 96 40 11 8C 96 03 53 58 54 84 12
-3A 96 80 11 00 00 04 50 55 53 48 00 84 12 3A 96
-00 12 A6 96 06 50 55 53 48 2E 42 00 84 12 3A 96
-40 12 FA 95 04 43 41 4C 4C 00 84 12 3A 96 80 12
-2C 80 2C 00 94 93 8E 94 DA 96 59 42 C4 21 5A 42
-C5 21 82 4A C4 21 BE 90 00 15 00 00 02 20 0A 89
-02 3C 09 8A 0A 49 3A 90 10 00 03 2C 5A 0E A8 3F
-1A 53 0E 4A 0D 12 87 12 5E 83 7C 85 0D 6F 75 74
-20 6F 66 20 62 6F 75 6E 64 73 C8 89 B4 96 05 50
-55 53 48 4D 84 12 D0 96 00 15 1E 97 04 50 4F 50
-4D 00 84 12 D0 96 00 17 20 82 04 93 3E 97 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 92 53 CA 21
-3E 40 2C 00 87 12 00 86 18 87 B0 81 64 8A 8E 94
-62 97 0A 4E 3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06
-6F 3F 9A 96 04 52 52 43 4D 00 84 12 38 97 50 00
-74 97 04 52 52 41 4D 00 84 12 38 97 50 01 82 97
-04 52 4C 41 4D 00 84 12 38 97 50 02 90 97 04 52
-52 55 4D 00 84 12 38 97 50 03 85 12 00 3C 9E 97
-03 53 3E 3D 85 12 00 38 B0 97 02 53 3C 00 85 12
-00 34 2C 97 03 30 3E 3D 85 12 00 30 C4 97 02 30
+64 85 04 1B 5B 37 6D 00 24 85 2C 80 DE 21 EA 80
+4C 80 B0 81 06 8A 64 85 05 6C 69 6E 65 3A 24 85
+38 81 26 83 C2 84 24 85 64 85 04 1B 5B 30 6D 00
+24 85 2A 90 82 85 60 89 5A 89 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 85 2C 80 9C 89 0C 88 22 80
+40 86 01 27 0D 12 87 12 20 82 E8 85 46 86 B0 81
+44 8A 22 80 A8 88 3E 82 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 8A 01 5D
+B2 43 BE 21 30 4D 54 8A 83 5B 27 5D 0D 12 87 12
+34 8A 2C 80 2C 80 0C 88 0C 88 22 80 BE 4F 02 00
+3E 4F 30 4D 6E 83 82 49 53 00 0D 12 87 12 38 82
+EA 80 B0 81 A0 8A 6C 8A 2C 80 7C 8A 0C 88 22 80
+34 8A 7C 8A 22 80 86 8A 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C 85
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC 88 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 82 E8 85 46 86 4C 80
+B0 81 44 8A 68 81 B0 81 06 8B 2C 80 2C 80 0C 88
+0C 88 2C 80 0C 88 0C 88 22 80 82 9F BC 21 40 25
+0D 12 87 12 64 85 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 89 68 8A 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C 80 22 80 0C 88 0A 8B 56 8A
+22 80 2A 8B 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 8B BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 8B 01 3A 30 12
+64 8B 0D 12 87 12 C2 85 20 82 E8 85 8E 8B 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 8B 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 85 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 8B BA 40 86 12 FC FF DC 3C
+4E 88 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 8B
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 8B
+06 43 52 45 41 54 45 00 B0 12 82 8B BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 88 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 8C 05 44 45 46 45 52 B0 12 82 8B AC 3C
+A6 86 05 3E 42 4F 44 59 2E 52 30 4D 00 8C 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 8B
+86 5B 54 48 45 4E 5D 00 30 4D 80 8C 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 80 01 00 20 82 E8 85
+54 88 3C 80 B0 81 00 8D 82 80 82 80 64 85 04 5B
+49 46 5D 00 56 8C BA 81 C2 8C 46 85 2E 81 AC 81
+F8 8C 82 80 82 80 64 85 06 5B 45 4C 53 45 5D 00
+56 8C BA 81 E6 8C 46 85 38 81 3C 80 B0 81 F8 8C
+2E 81 AC 81 F8 8C 64 85 06 5B 54 48 45 4E 5D 00
+56 8C BA 81 F8 8C 38 81 4C 80 BA 81 9C 8C 22 80
+46 85 64 85 05 0D 0A 6B 6F 20 24 85 CE 83 62 88
+AC 81 9C 8C 8C 8C 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 8D 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 82 E8 85 46 86 64 80 22 80 26 8D
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 8D 5C 81 22 80 58 8D 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 88 06 4D 41 52 4B 45 52 00
+B0 12 82 8B BA 40 84 12 FC FF BA 40 56 8D FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 8A 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 81 00 00 2E 53 30 4D
+34 8C 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC 81 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 85 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E 8C 85 42 45 47 49 4E 30 40 74 83 E2 8D
+85 55 4E 54 49 4C 39 40 B0 81 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 8A
+85 41 47 41 49 4E 39 40 AC 81 EF 3F CA 8B 85 57
+48 49 4C 45 0D 12 87 12 A8 8D 70 80 22 80 C0 8A
+86 52 45 50 45 41 54 00 0D 12 87 12 26 8E E8 8D
+22 80 C2 8D 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 81 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 8D 84 4C 4F 4F
+50 00 39 40 E2 81 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 83
+85 2B 4C 4F 4F 50 39 40 D0 81 E5 3F 7C 8E 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 81 00 00 BA 40
+AC 81 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE 8E 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 8E 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 8C 2C 80 10 00 2C 80 00 00 C0 81
+2C 80 00 00 0C 88 E2 81 40 8F 74 83 2C 80 C8 21
+3C 80 EA 80 0C 88 F2 80 20 8C 2C 80 CA 21 F2 80
+22 80 32 8A 05 46 4F 52 54 48 84 12 5A 8F 88 99
+FE 92 FE 9A 64 8F 5A 92 B0 8E C6 9A F2 99 10 9A
+68 90 D4 9A 1A 9A 00 00 7C 99 5E 8A 06 9A 00 00
+20 8E 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA 8A 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE 85 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 8E
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A 8F C8 8F DC 8F EC 8F 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 8F
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 8F 56 92
+86 9B 40 8E 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 90 92 42 0C 18 30 90 EF 3F 20 90 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E 90 92 42
+C6 21 30 90 30 4D 34 90 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 8F 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 89 B2 40 86 9B 0C 18 B2 40
+56 92 0E 18 CC 3F 82 90 04 57 41 52 4D 00 30 40
+B2 90 1E 42 08 18 0D 12 87 12 64 85 06 0D 1B 5B
+37 6D 23 00 24 85 5E 83 64 85 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 85 2C 80 30 FF
+74 83 20 81 26 83 64 85 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 89 F4 8D 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 92 D3
+04 02 B2 40 FE FF 02 02 D2 D3 03 02 F2 43 22 02
+F2 D3 26 02 F2 D0 BF 00 47 02 F2 40 BF 00 43 02
+F2 40 40 00 45 02 F2 40 A5 00 A1 01 F2 40 20 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BE 00 82 01 B2 40 DC 02 84 01 39 40
+80 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 32 00 29 83 B9 40 14 91 CE FF FB 23 B2 40
+54 84 E2 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 80 36 40 B4 80 35 40 00 80 34 40 0C 80 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B2 21 02 04 20 38 E3 18 53 82 48 08 18 B2 40
+81 00 80 05 92 42 02 18 86 05 92 42 04 18 88 05
+F2 D0 0C 00 2B 02 92 C3 80 05 92 D3 9A 05 3D 40
+24 92 38 90 0A 00 38 27 38 90 16 00 35 2F 28 93
+0E 23 03 27 AE 90 92 8F 09 41 53 53 45 4D 42 4C
+45 52 84 12 5A 8F 56 98 C4 98 0A 98 2E 99 D0 97
+56 99 EA 94 00 00 C6 97 7A 98 28 98 68 98 FA 95
+00 00 00 00 66 99 8E 8F A4 8D 85 48 49 32 4C 4F
+0D 12 87 12 74 83 BC 8D 0C 88 56 8A 98 8F 32 92
+22 80 08 91 04 43 4F 44 45 00 B0 12 82 8B A2 82
+C6 21 0D 12 87 12 74 8B AC 81 6C 92 00 00 07 45
+4E 44 43 4F 44 45 0D 12 87 12 B2 8F 0A 8B 22 80
+28 92 03 41 53 4D 92 42 DA 21 E0 21 B2 40 36 92
+DA 21 E3 3F 8E 92 06 45 4E 44 41 53 4D 00 92 42
+E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
+C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
+C6 21 B2 43 BE 21 30 40 B2 8F 00 00 05 4C 4F 32
+48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 74 92 07 43
+4F 44 45 4E 4E 4D 0D 12 87 12 4C 8B 56 8A 10 93
+3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21 39 48
+2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A FC 27
+1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15 87 12
+E8 85 46 86 BA 81 50 93 00 87 B0 81 44 8A 72 93
+52 93 29 4E 39 90 86 12 02 20 2E 53 0A 3C 39 90
+85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12 01 20
+2E 52 1B 17 30 41 3E 40 28 00 B0 12 3C 93 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00 1C 15
+12 12 C4 21 92 53 C4 21 87 12 E8 85 00 87 B0 81
+AE 93 A4 93 21 53 3E 90 10 00 84 2D E2 2B B0 93
+B2 41 C4 21 DE 3F 0D 12 87 12 20 82 1A 93 C0 93
+0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F FA 90
+23 00 00 00 2D 20 92 53 C4 21 B0 12 3C 93 0E 93
+03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40 10 03
+1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92 03 20
+3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02 0D 3C
+3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41 30 4D
+FA 90 26 00 00 00 07 20 3C 40 10 02 92 53 C4 21
+B0 12 3C 93 EC 3F FA 90 40 00 00 00 16 20 3C 40
+20 00 92 53 C4 21 B0 12 8E 93 0C 20 3C 50 10 00
+3E 40 2B 00 B0 12 8E 93 92 92 C0 21 C4 21 02 24
+92 53 C4 21 8E 10 0C 5E D8 3F B0 12 8E 93 FA 23
+3C 50 10 00 B0 12 76 93 EF 3F 0D 12 87 12 20 82
+1A 93 94 94 FE 90 26 00 00 00 3E 40 20 00 03 20
+3C 50 82 00 CB 3F B0 12 8E 93 E5 23 3C 50 80 00
+B0 12 76 93 E0 3F 44 84 04 52 45 54 49 00 0D 12
+87 12 2C 80 00 13 0C 88 22 80 2C 80 2C 00 B6 93
+8A 94 D4 94 2E 4E 0E DC 09 4B A5 3F EC 92 03 4D
+4F 56 84 12 CA 94 00 40 DE 94 05 4D 4F 56 2E 42
+84 12 CA 94 40 40 00 00 03 41 44 44 84 12 CA 94
+00 50 F8 94 05 41 44 44 2E 42 84 12 CA 94 40 50
+04 95 04 41 44 44 43 00 84 12 CA 94 00 60 12 95
+06 41 44 44 43 2E 42 00 84 12 CA 94 40 60 B8 94
+04 53 55 42 43 00 84 12 CA 94 00 70 30 95 06 53
+55 42 43 2E 42 00 84 12 CA 94 40 70 3E 95 03 53
+55 42 84 12 CA 94 00 80 4E 95 05 53 55 42 2E 42
+84 12 CA 94 40 80 C8 92 03 43 4D 50 84 12 CA 94
+00 90 68 95 05 43 4D 50 2E 42 84 12 CA 94 40 90
+B6 92 04 44 41 44 44 00 84 12 CA 94 00 A0 82 95
+06 44 41 44 44 2E 42 00 84 12 CA 94 40 A0 74 95
+03 42 49 54 84 12 CA 94 00 B0 A0 95 05 42 49 54
+2E 42 84 12 CA 94 40 B0 AC 95 03 42 49 43 84 12
+CA 94 00 C0 BA 95 05 42 49 43 2E 42 84 12 CA 94
+40 C0 C6 95 03 42 49 53 84 12 CA 94 00 D0 D4 95
+05 42 49 53 2E 42 84 12 CA 94 40 D0 00 00 03 58
+4F 52 84 12 CA 94 00 E0 EE 95 05 58 4F 52 2E 42
+84 12 CA 94 40 E0 20 95 03 41 4E 44 84 12 CA 94
+00 F0 08 96 05 41 4E 44 2E 42 84 12 CA 94 40 F0
+20 82 B6 93 26 96 0A 4C 3C F0 70 00 8A 10 3A F0
+0F 00 0C DA 4F 3F 5A 95 03 52 52 43 84 12 20 96
+00 10 38 96 05 52 52 43 2E 42 84 12 20 96 40 10
+44 96 04 53 57 50 42 00 84 12 20 96 80 10 52 96
+03 52 52 41 84 12 20 96 00 11 60 96 05 52 52 41
+2E 42 84 12 20 96 40 11 6C 96 03 53 58 54 84 12
+20 96 80 11 00 00 04 50 55 53 48 00 84 12 20 96
+00 12 86 96 06 50 55 53 48 2E 42 00 84 12 20 96
+40 12 E0 95 04 43 41 4C 4C 00 84 12 20 96 80 12
+1A 53 0E 4A 0D 12 87 12 5E 83 64 85 0D 6F 75 74
+20 6F 66 20 62 6F 75 6E 64 73 A8 89 20 82 1A 93
+D2 96 0C 43 1B 42 C6 21 A2 53 C6 21 92 53 C4 21
+3E 40 2C 00 1C 15 87 12 E8 85 00 87 B0 81 44 8A
+F2 96 1B 17 87 12 8A 94 FA 96 0A 4E 3E 4F 1A 83
+D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28 0C 8A
+08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92 C8 2F
+8A 10 5A 06 86 3F 7A 96 04 52 52 43 4D 00 84 12
+CC 96 50 00 28 97 04 52 52 41 4D 00 84 12 CC 96
+50 01 36 97 04 52 4C 41 4D 00 84 12 CC 96 50 02
+44 97 04 52 52 55 4D 00 84 12 CC 96 50 03 94 96
+05 50 55 53 48 4D 84 12 CC 96 00 15 60 97 04 50
+4F 50 4D 00 84 12 CC 96 00 17 85 12 00 3C 52 97
+03 53 3E 3D 85 12 00 38 80 97 02 53 3C 00 85 12
+00 34 6E 97 03 30 3E 3D 85 12 00 30 94 97 02 30
 3C 00 85 12 00 30 00 00 02 55 3C 00 85 12 00 2C
-D8 97 03 55 3E 3D 85 12 00 28 CE 97 03 30 3C 3E
-85 12 00 24 EC 97 02 30 3D 00 85 12 00 20 52 84
-02 49 46 00 1A 42 CC 21 8A 4E 00 00 A2 53 CC 21
-0E 4A 30 4D E2 97 04 54 48 45 4E 00 1A 42 CC 21
+A8 97 03 55 3E 3D 85 12 00 28 9E 97 03 30 3C 3E
+85 12 00 24 BC 97 02 30 3D 00 85 12 00 20 00 00
+02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53 C6 21
+0E 4A 30 4D B2 97 04 54 48 45 4E 00 1A 42 C6 21
 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90 00 02
-68 2F 88 DA 00 00 30 4D AA 95 04 45 4C 53 45 00
-1A 42 CC 21 BA 40 00 3C 00 00 A2 53 CC 21 2F 83
-8F 4A 00 00 E3 3F 16 98 05 55 4E 54 49 4C 3A 4F
-08 4E 3E 4F 19 42 CC 21 2A 83 0A 89 0A 11 3A 90
-00 FE 47 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
-CC 21 30 4D 2E 96 05 41 47 41 49 4E 0D 12 87 12
-AA 97 5E 98 22 80 00 00 05 57 48 49 4C 45 0D 12
-87 12 04 98 70 80 22 80 BA 97 06 52 45 50 45 41
-54 00 0D 12 87 12 AA 97 5E 98 1C 98 22 80 C0 98
-3D 41 08 4E 3E 4F 2A 48 0A 93 04 20 98 42 CC 21
-00 00 30 4D 88 43 00 00 C3 3F C4 96 03 42 57 31
-84 12 BE 98 00 00 DC 98 03 42 57 32 84 12 BE 98
-00 00 E8 98 03 42 57 33 84 12 BE 98 00 00 00 99
-3D 41 1A 42 CC 21 28 4E 08 93 08 20 BA 4F 00 00
-A2 53 CC 21 8E 4A 00 00 3E 4F 30 4D 8E 43 00 00
-80 3F 00 00 03 46 57 31 84 12 FE 98 00 00 24 99
-03 46 57 32 84 12 FE 98 00 00 30 99 03 46 57 33
-84 12 FE 98 00 00 3E 90 00 30 07 24 3E E0 00 04
-3E B0 00 10 02 24 3E E0 00 08 30 4D 3C 99 04 47
-4F 54 4F 00 0D 12 87 12 AA 97 54 8A 1A 88 22 80
-00 00 05 3F 47 4F 54 4F 0D 12 87 12 46 99 54 8A
-1A 88 22 80 00 00 03 4A 4D 50 0D 12 87 12 54 8A
-8C 98 22 80 72 99 04 3F 4A 4D 50 00 0D 12 87 12
-46 99 54 8A 70 80 5E 98 22 80 36 8D 07 7B 54 4F
-4F 4C 53 7D 30 4D AA 92 03 41 4E 44 3E FF 30 4D
-BA 8F 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
+58 2F 88 DA 00 00 30 4D 90 95 04 45 4C 53 45 00
+1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21 2F 83
+8F 4A 00 00 E3 3F E6 97 05 55 4E 54 49 4C 3A 4F
+08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11 3A 90
+00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
+C6 21 30 4D 14 96 05 41 47 41 49 4E 0D 12 87 12
+7A 97 2E 98 22 80 00 00 05 57 48 49 4C 45 0D 12
+87 12 D4 97 70 80 22 80 8A 97 06 52 45 50 45 41
+54 00 0D 12 87 12 7A 97 2E 98 EC 97 22 80 90 98
+3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43 00 00
+C7 23 98 42 C6 21 00 00 30 4D A4 96 03 42 57 31
+84 12 8E 98 E2 21 AC 98 03 42 57 32 84 12 8E 98
+E4 21 B8 98 03 42 57 33 84 12 8E 98 E6 21 D0 98
+3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00 08 93
+88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00 3E 4F
+30 4D 00 00 03 46 57 31 84 12 CE 98 E8 21 F4 98
+03 46 57 32 84 12 CE 98 EA 21 00 99 03 46 57 33
+84 12 CE 98 EC 21 3E 90 00 30 07 24 3E E0 00 04
+3E B0 00 10 02 24 3E E0 00 08 30 4D 0C 99 04 47
+4F 54 4F 00 0D 12 87 12 7A 97 34 8A 02 88 22 80
+00 00 05 3F 47 4F 54 4F 0D 12 87 12 16 99 34 8A
+02 88 22 80 00 00 03 4A 4D 50 0D 12 87 12 34 8A
+5C 98 22 80 42 99 04 3F 4A 4D 50 00 0D 12 87 12
+16 99 34 8A 70 80 2E 98 22 80 40 8D 07 7B 54 4F
+4F 4C 53 7D 30 4D A2 92 03 41 4E 44 3E FF 30 4D
+C2 8F 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
 FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80 06 00
-2E 8F 0E 11 0D 12 87 12 2C 80 3C 00 C6 84 5E 83
-2C 80 08 00 C6 84 2C 80 3E 00 C6 84 FC 84 82 80
-82 80 8E 81 BA 81 0E 9A 5A 80 5A 80 22 80 C0 81
-F8 81 EA 80 26 83 2C 80 02 00 D0 81 10 9A 22 80
-C2 99 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
-E0 20 D2 3F BE 86 01 3F 2E 4E 30 40 26 83 46 90
-03 50 41 44 85 12 E4 20 02 91 05 57 4F 52 44 53
-0D 12 87 12 78 85 2C 80 03 00 12 85 2C 80 D0 21
-EA 80 44 9A 2C 80 10 00 3C 80 18 81 EA 8E 2C 80
+2E 8F 0E 11 0D 12 87 12 2C 80 3C 00 B0 84 5E 83
+2C 80 08 00 B0 84 2C 80 3E 00 B0 84 EC 84 82 80
+82 80 8E 81 BA 81 DE 99 5A 80 5A 80 22 80 C0 81
+F8 81 EA 80 26 83 2C 80 02 00 D0 81 E0 99 22 80
+92 99 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
+E0 20 D2 3F 42 8C 01 3F 2E 4E 30 40 26 83 4E 90
+03 50 41 44 85 12 E4 20 A8 90 05 57 4F 52 44 53
+0D 12 87 12 52 85 2C 80 03 00 02 85 2C 80 CA 21
+EA 80 14 9A 2C 80 10 00 3C 80 18 81 F2 8E 2C 80
 00 00 3C 80 2C 80 10 00 3C 80 18 81 2C 80 00 00
-C0 81 3C 80 F8 81 44 9A 18 81 EA 80 A4 81 B0 81
-A0 9A 5A 80 5A 80 F8 81 3C 80 44 9A 18 81 EA 80
-2C 80 02 00 D0 81 82 9A 4C 80 B0 81 E2 9A 3C 80
-2C 80 02 00 20 81 EA 80 92 80 44 9A 18 81 F2 80
-3C 80 6C 88 2C 80 7F 00 BC 99 34 85 00 81 2C 80
-0F 00 BC 99 2C 80 10 00 70 80 20 81 12 85 AC 81
-6E 9A 5A 80 22 80 E4 8E 03 4D 41 58 2E 9F 07 38
-2F 53 30 4D E8 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F
-30 4D F8 8D 03 55 2E 52 0D 12 87 12 A8 80 42 82
+C0 81 3C 80 F8 81 14 9A 18 81 EA 80 A4 81 B0 81
+70 9A 5A 80 5A 80 F8 81 3C 80 14 9A 18 81 EA 80
+2C 80 02 00 D0 81 52 9A 4C 80 B0 81 B2 9A 3C 80
+2C 80 02 00 20 81 EA 80 92 80 14 9A 18 81 F2 80
+3C 80 54 88 2C 80 7F 00 8C 99 24 85 00 81 2C 80
+0F 00 8C 99 2C 80 10 00 70 80 20 81 02 85 AC 81
+3E 9A 5A 80 22 80 EC 8E 03 4D 41 58 2E 9F 07 38
+2F 53 30 4D B8 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F
+30 4D 00 8E 03 55 2E 52 0D 12 87 12 A8 80 42 82
 2C 80 00 00 A2 82 D4 82 F0 82 B4 80 82 80 20 81
-2C 80 00 00 EC 9A 12 85 34 85 22 80 C8 8F 04 44
-55 4D 50 00 0D 12 12 12 E2 21 B2 40 10 00 E2 21
+2C 80 00 00 BC 9A 02 85 24 85 22 80 D0 8F 04 44
+55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00 DC 21
 2E 5F 87 12 70 80 82 80 82 80 26 83 2C 80 01 00
-20 81 26 83 2C 80 FE FF BC 99 C0 81 78 85 F8 81
-2C 80 07 00 08 9B FC 84 F8 81 2C 80 10 00 18 81
-F8 81 C0 81 F8 81 00 81 2C 80 03 00 08 9B E2 81
-74 9B FC 84 FC 84 F8 81 2C 80 10 00 18 81 F8 81
-C0 81 F8 81 00 81 2C 80 7E 00 FA 9A 20 82 EC 9A
-C6 84 E2 81 92 9B 2C 80 10 00 D0 81 5C 9B B4 80
+20 81 26 83 2C 80 FE FF 8C 99 C0 81 52 85 F8 81
+2C 80 07 00 D8 9A EC 84 F8 81 2C 80 10 00 18 81
+F8 81 C0 81 F8 81 00 81 2C 80 03 00 D8 9A E2 81
+44 9B EC 84 EC 84 F8 81 2C 80 10 00 18 81 F8 81
+C0 81 F8 81 00 81 2C 80 7E 00 CA 9A 20 82 BC 9A
+B0 84 E2 81 62 9B 2C 80 10 00 D0 81 2C 9B B4 80
 2C 82 F2 80 22 80
 @FFFE
-1A 91
+14 91
 q
index 70956fb..0884927 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 84 C0 5D 00 24 05 00 18 00 C4 9B 6C 92
-2C 84 3E 84 00 00 00 00
+10 00 01 00 A1 00 C0 5D 05 00 18 00 86 9B 56 92
+24 84 36 84 00 00 00 00 00 00
+@2400
+00 00
 @8000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 81 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 81 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 81 02 42 4C 00
-85 12 20 00 1C 82 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C 82 04 42 41 53 45 00 85 12 DC 21
 C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA 81 06 55 4D 2F
 4D 4F 44 00 30 12 5A 80 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 80 05 53 54 41 54 45 85 12 BE 21 7E 81 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 80 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 82
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 82 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 82 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 82
 02 23 53 00 0D 12 87 12 A2 82 DC 82 2D 83 09 93
@@ -53,400 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 82 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 82 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 82 02 55 2E 00 0D 12 87 12 42 82 2C 80 00 00
-D4 82 F0 82 40 85 08 85 22 80 3E 81 02 44 2E 00
+D4 82 F0 82 24 85 EC 84 22 80 3E 81 02 44 2E 00
 0D 12 87 12 42 82 70 80 82 80 44 81 D4 82 92 80
-14 83 F0 82 40 85 08 85 22 80 7C 80 01 2E 0E 93
+14 83 F0 82 24 85 EC 84 22 80 7C 80 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 83 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 80 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC 82 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E 83 05 28 4B 45 59 29 18 42
-8C 05 2F 83 8F 4E 00 00 B0 12 2C 84 92 B3 9C 05
-FD 27 1E 42 8C 05 B0 12 3E 84 30 4D 08 82 03 4B
-45 59 30 40 AE 83 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 83
-06 41 43 43 45 50 54 00 3C 40 A4 84 3B 40 6E 84
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 84 92 B3 9C 05 05 24 18 42 8C 05 38 90
-0A 00 04 20 21 53 39 40 52 84 4D 15 A2 B3 9C 05
-FD 27 B2 40 11 00 8E 05 D2 C3 03 02 30 41 B2 40
-13 00 8E 05 D2 D3 03 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 84 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 8C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 9C 05
-FD 27 82 48 8E 05 30 4D 9A 84 2D 83 92 B3 9C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 83 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 83 04 45 4D 49
-54 00 30 40 C4 84 CC 84 04 45 43 48 4F 00 B2 40
-82 48 92 84 82 43 E4 21 30 4D 5C 83 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 84 92 43 E4 21 30 4D
-0E 83 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 85 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 85 EF 3F 2C 85 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 83 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 85 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 85 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 84 04 28 43 52 29 00
-0D 12 87 12 88 85 02 0D 0A 00 40 85 22 80 92 83
-02 43 52 00 30 40 70 85 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 85 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E 85 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 85
-82 53 22 00 0D 12 87 12 2C 80 88 85 30 88 B8 85
-2C 80 22 00 0C 86 A6 85 DA 85 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC 84 82 2E 22 00 0D 12 87 12 C4 85 2C 80 40 85
-30 88 22 80 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 80 34 40 0C 80 30 4D 8C 81 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 87 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 87 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 82 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 84 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 81 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E 88 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C 80 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 85 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 88 20 82 0C 86
-A2 88 3D 40 AA 88 E1 22 44 3E AC 88 0A 4E 3E 4F
-3D 40 C2 88 37 27 3D 40 9C 88 1A E2 BE 21 B8 27
-B2 23 C4 88 3E 4F 3D 40 9C 88 BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 8B CC 3F
-1E 88 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 88 FE 88 B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 81
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 85 05 0D 0A 6F
-6B 20 40 85 D6 83 08 85 96 88 D6 80 68 81 88 85
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 89
-2C 80 30 FF 74 83 A4 81 88 85 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 89 38 82 EA 80 B0 81 2A 89
-88 85 05 0D 0A 20 20 20 AC 81 32 89 F0 83 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 90 16 91
-B2 40 60 84 54 84 B2 40 C4 84 D4 84 B2 40 70 85
-86 85 B2 40 AE 83 D4 83 82 43 F2 98 82 43 FE 98
-82 43 0A 99 82 43 3A 99 82 43 46 99 82 43 52 99
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 84 B0 12 96 89 A2 B3
-9C 05 FD 27 B2 40 11 00 8E 05 D2 C3 03 02 92 C3
-9C 05 38 40 F0 FF 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 9C 05 F3 23 0D 12 87 12 88 85 04 1B
-5B 37 6D 00 40 85 2C 80 E4 21 EA 80 4C 80 B0 81
-32 8A 88 85 05 6C 69 6E 65 3A 40 85 38 81 26 83
-DE 84 40 85 88 85 04 1B 5B 30 6D 00 40 85 2E 90
-A6 85 84 89 7E 89 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 85 2C 80 C8 89 30 88 22 80 64 86 01 27
-0D 12 87 12 20 82 0C 86 6A 86 B0 81 70 8A 22 80
-CC 88 3E 82 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 8A 01 5D B2 43 BE 21
-30 4D 80 8A 83 5B 27 5D 0D 12 87 12 60 8A 2C 80
-2C 80 30 88 30 88 22 80 BE 4F 02 00 3E 4F 30 4D
-6A 85 82 49 53 00 0D 12 87 12 38 82 EA 80 B0 81
-CC 8A 98 8A 2C 80 A8 8A 30 88 22 80 60 8A A8 8A
-22 80 B2 8A 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 85 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 89 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 82 0C 86 6A 86 4C 80 B0 81 70 8A
-68 81 B0 81 32 8B 2C 80 2C 80 30 88 30 88 2C 80
-30 88 30 88 22 80 82 9F BC 21 2C 25 0D 12 87 12
-88 85 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 89 94 8A 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C 80 22 80 30 88 36 8B 82 8A 22 80 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 8B 01 3A 30 12 6E 8B 0D 12 87 12
-E6 85 20 82 0C 86 98 8B 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 86 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 8B BA 40 86 12 FC FF DF 3C 72 88
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 8B BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 8B 06 43
-52 45 41 54 45 00 B0 12 8C 8B BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 88 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 8C 05 44 45 46 45 52 B0 12 8C 8B BA 40 30 40
-FC FF BA 40 2E 8C FE FF A9 3C FE 8B 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 8B 86 5B
-54 48 45 4E 5D 00 30 4D 7E 8C 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 80 01 00 20 82 0C 86 78 88
-3C 80 B0 81 FE 8C 82 80 82 80 88 85 04 5B 49 46
-5D 00 54 8C BA 81 C0 8C 62 85 2E 81 AC 81 F6 8C
-82 80 82 80 88 85 06 5B 45 4C 53 45 5D 00 54 8C
-BA 81 E4 8C 62 85 38 81 3C 80 B0 81 F6 8C 2E 81
-AC 81 F6 8C 88 85 06 5B 54 48 45 4E 5D 00 54 8C
-BA 81 F6 8C 38 81 4C 80 BA 81 9A 8C 22 80 62 85
-88 85 05 0D 0A 6B 6F 20 40 85 D6 83 86 88 AC 81
-9A 8C 8A 8C 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 8D 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 82 0C 86 6A 86 64 80 5C 81 22 80
-24 8D 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 82 0C 86 6A 86 64 80 22 80 5C 8D 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 88 06 4D 41 52
-4B 45 52 00 B0 12 8C 8B BA 40 84 12 FC FF BA 40
-5A 8D FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 8A 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 81 00 00
-2E 53 30 4D 32 8C 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC 81 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 85 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C 8C 85 42 45 47 49 4E 30 40
-74 83 E6 8D 85 55 4E 54 49 4C 39 40 B0 81 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 8A 85 41 47 41 49 4E 39 40 AC 81 EF 3F
-C8 8B 85 57 48 49 4C 45 0D 12 87 12 AC 8D 70 80
-22 80 EC 8A 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 8E EC 8D 22 80 C6 8D 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 81 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C 8D
-84 4C 4F 4F 50 00 39 40 E2 81 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 83 85 2B 4C 4F 4F 50 39 40 D0 81 E5 3F
-80 8E 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 81
-00 00 BA 40 AC 81 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 8E
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 8E 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 8C 2C 80 10 00 2C 80
-00 00 C0 81 2C 80 00 00 30 88 E2 81 44 8F 74 83
-2C 80 CE 21 3C 80 EA 80 30 88 F2 80 1E 8C 2C 80
-D0 21 F2 80 22 80 5E 8A 05 46 4F 52 54 48 84 12
-5E 8F C6 99 8A 92 3C 9B 68 8F 70 92 B4 8E 04 9B
-30 9A 4E 9A 6C 90 12 9B 58 9A 00 00 BA 99 8A 8A
-44 9A 00 00 24 8E 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 8B 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 85 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 8E 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E 8F CC 8F E0 8F F0 8F
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 8F 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 8F 6C 92 C4 9B 44 8E 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 90 92 42 0C 18 34 90 EF 3F
-24 90 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 90 92 42 CC 21 34 90 30 4D 38 90 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 8F 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CE FF FA 23 B0 12 8A 89
-B2 40 C4 9B 0C 18 B2 40 6C 92 0E 18 CA 3F A8 8D
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 85 06 0D 1B 5B 37 6D 23 00 40 85 5E 83 88 85
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 85 2C 80 30 FF 74 83 20 81 26 83 88 85 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 89 86 90 04 57
-41 52 4D 00 30 40 B8 90 F8 8D 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02
-92 D3 04 02 B2 40 FE FF 02 02 D2 D3 03 02 F2 43
-22 02 F2 D3 26 02 F2 D0 BF 00 47 02 F2 40 BF 00
-43 02 F2 40 40 00 45 02 F2 40 A5 00 A1 01 F2 40
-20 00 A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40
-FF 1E 80 01 B2 40 BE 00 82 01 B2 40 DC 02 84 01
-39 40 80 01 82 43 88 01 92 D2 5E 01 08 18 A2 93
-08 18 01 24 49 07 38 40 59 14 18 83 FE 23 19 83
-FA 23 3A 40 26 91 39 40 CE FF 89 4A 00 00 29 53
-FC 23 92 42 02 18 E2 FF B2 40 18 00 0A 18 39 40
-00 20 89 43 00 00 29 53 39 90 FF 2F FA 2B 31 40
-E0 20 3F 40 80 20 37 40 22 80 36 40 B4 80 35 40
-00 80 34 40 0C 80 B2 40 0A 00 E2 21 B2 43 B4 21
-92 C3 30 01 18 42 08 18 F2 B2 21 02 04 20 38 E3
-18 53 82 48 08 18 B2 40 81 00 80 05 92 43 86 05
-B2 40 A1 00 88 05 F2 D0 0C 00 2B 02 92 C3 80 05
-92 D3 9A 05 3D 40 3A 92 38 90 0A 00 2F 27 38 90
-16 00 2C 2F 28 93 05 23 FA 26 14 91 96 8F 09 41
-53 53 45 4D 42 4C 45 52 84 12 5E 8F 94 98 02 99
-48 98 6C 99 0E 98 94 99 12 95 00 00 04 98 B8 98
-66 98 A6 98 22 96 00 00 00 00 A4 99 92 8F B0 90
-85 48 49 32 4C 4F 0D 12 87 12 74 83 C0 8D 30 88
-82 8A 9C 8F 48 92 22 80 1A 91 04 43 4F 44 45 00
-B0 12 8C 8B A2 82 CC 21 0D 12 87 12 7E 8B AC 81
-82 92 00 00 07 45 4E 44 43 4F 44 45 0D 12 87 12
-B6 8F 36 8B 22 80 3E 92 03 41 53 4D 92 42 E0 21
-C0 21 B2 40 4C 92 E0 21 E3 3F A4 92 06 45 4E 44
-41 53 4D 00 92 42 C0 21 E0 21 E8 3F 00 00 05 43
-4F 4C 4F 4E 1A 42 CC 21 BA 40 0D 12 00 00 BA 40
-87 12 02 00 A2 52 CC 21 B2 43 BE 21 30 40 B6 8F
-00 00 05 4C 4F 32 48 49 A2 83 CC 21 1A 42 CC 21
-EE 3F 38 40 C6 21 39 48 2A 48 09 5A 1A 52 CA 21
-09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
-CA 21 30 4D 87 12 0C 86 6A 86 BA 81 46 93 24 87
-B0 81 70 8A 68 93 48 93 29 4E 39 90 86 12 02 20
-2E 53 30 41 39 90 85 12 03 20 1E 4E 02 00 30 41
-39 90 84 12 01 20 2E 52 30 41 19 42 CC 21 A2 53
-CC 21 89 4E 00 00 3E 40 29 00 12 12 CA 21 92 53
-CA 21 87 12 0C 86 24 87 B0 81 98 93 8E 93 21 53
-3E 90 10 00 BE 2D 30 41 9A 93 B2 41 CA 21 22 D3
-30 41 0D 12 87 12 20 82 12 93 AC 93 82 43 C4 21
-92 42 CC 21 C2 21 A2 53 CC 21 0A 4E 3E 4F FA 90
-23 00 00 00 34 20 92 53 CA 21 B0 12 34 93 0E 93
-04 20 B2 40 00 03 C4 21 27 3C 1E 93 04 20 B2 40
-10 03 C4 21 21 3C 2E 93 04 20 B2 40 20 03 C4 21
-1B 3C 2E 92 04 20 B2 40 20 02 C4 21 15 3C 3E 92
-04 20 B2 40 30 02 C4 21 0F 3C 3E 93 04 20 B2 40
-30 03 C4 21 09 3C B2 40 30 00 C4 21 19 42 CC 21
-A2 53 CC 21 89 4E 00 00 3E 4F 3D 41 30 4D FA 90
-26 00 00 00 08 20 B2 40 10 02 C4 21 92 53 CA 21
-B0 12 34 93 EB 3F FA 90 40 00 00 00 1A 20 B2 40
-20 00 C4 21 92 53 CA 21 B0 12 7A 93 0E 20 B2 50
-10 00 C4 21 3E 40 2B 00 B0 12 7A 93 33 24 92 92
-C6 21 CA 21 02 24 92 53 CA 21 8E 10 82 5E C4 21
-D3 3F B0 12 7A 93 F9 23 B2 50 10 00 C4 21 3E 40
-28 00 B0 12 34 93 B0 12 6A 93 E8 3F 0D 12 87 12
-20 82 12 93 A6 94 FE 90 26 00 00 00 3E 40 20 00
-04 20 B2 50 82 00 C4 21 C1 3F B0 12 7A 93 DE 23
-B2 50 80 00 C4 21 3E 40 28 00 B0 12 34 93 B0 12
-6A 93 D4 23 3D 40 70 8A 30 4D 4C 84 04 52 45 54
-49 00 0D 12 87 12 2C 80 00 13 30 88 22 80 2C 80
-2C 00 A2 93 9C 94 F8 94 2E 4E 1E D2 C4 21 19 42
-C2 21 90 3F 02 93 03 4D 4F 56 84 12 EE 94 00 40
-06 95 05 4D 4F 56 2E 42 84 12 EE 94 40 40 00 00
-03 41 44 44 84 12 EE 94 00 50 20 95 05 41 44 44
-2E 42 84 12 EE 94 40 50 2C 95 04 41 44 44 43 00
-84 12 EE 94 00 60 3A 95 06 41 44 44 43 2E 42 00
-84 12 EE 94 40 60 DC 94 04 53 55 42 43 00 84 12
-EE 94 00 70 58 95 06 53 55 42 43 2E 42 00 84 12
-EE 94 40 70 66 95 03 53 55 42 84 12 EE 94 00 80
-76 95 05 53 55 42 2E 42 84 12 EE 94 40 80 DE 92
-03 43 4D 50 84 12 EE 94 00 90 90 95 05 43 4D 50
-2E 42 84 12 EE 94 40 90 CC 92 04 44 41 44 44 00
-84 12 EE 94 00 A0 AA 95 06 44 41 44 44 2E 42 00
-84 12 EE 94 40 A0 9C 95 03 42 49 54 84 12 EE 94
-00 B0 C8 95 05 42 49 54 2E 42 84 12 EE 94 40 B0
-D4 95 03 42 49 43 84 12 EE 94 00 C0 E2 95 05 42
-49 43 2E 42 84 12 EE 94 40 C0 EE 95 03 42 49 53
-84 12 EE 94 00 D0 FC 95 05 42 49 53 2E 42 84 12
-EE 94 40 D0 00 00 03 58 4F 52 84 12 EE 94 00 E0
-16 96 05 58 4F 52 2E 42 84 12 EE 94 40 E0 48 95
-03 41 4E 44 84 12 EE 94 00 F0 30 96 05 41 4E 44
-2E 42 84 12 EE 94 40 F0 20 82 A2 93 4E 96 1A 42
-C4 21 B2 F0 70 00 C4 21 8A 10 3A F0 0F 00 82 DA
-C4 21 4A 3F 82 95 03 52 52 43 84 12 48 96 00 10
-66 96 05 52 52 43 2E 42 84 12 48 96 40 10 72 96
-04 53 57 50 42 00 84 12 48 96 80 10 80 96 03 52
-52 41 84 12 48 96 00 11 8E 96 05 52 52 41 2E 42
-84 12 48 96 40 11 9A 96 03 53 58 54 84 12 48 96
-80 11 00 00 04 50 55 53 48 00 84 12 48 96 00 12
-B4 96 06 50 55 53 48 2E 42 00 84 12 48 96 40 12
-08 96 04 43 41 4C 4C 00 84 12 48 96 80 12 2C 80
-2C 00 A2 93 9C 94 E8 96 59 42 C4 21 5A 42 C5 21
-82 4A C4 21 BE 90 00 15 00 00 02 20 0A 89 02 3C
-09 8A 0A 49 3A 90 10 00 03 2C 5A 0E A8 3F 1A 53
-0E 4A 0D 12 87 12 5E 83 88 85 0D 6F 75 74 20 6F
-66 20 62 6F 75 6E 64 73 D4 89 C2 96 05 50 55 53
-48 4D 84 12 DE 96 00 15 2C 97 04 50 4F 50 4D 00
-84 12 DE 96 00 17 20 82 12 93 4C 97 82 43 C4 21
-92 42 CC 21 C2 21 A2 53 CC 21 92 53 CA 21 3E 40
-2C 00 87 12 0C 86 24 87 B0 81 70 8A 9C 94 70 97
-0A 4E 3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F
-A8 96 04 52 52 43 4D 00 84 12 46 97 50 00 82 97
-04 52 52 41 4D 00 84 12 46 97 50 01 90 97 04 52
-4C 41 4D 00 84 12 46 97 50 02 9E 97 04 52 52 55
-4D 00 84 12 46 97 50 03 85 12 00 3C AC 97 03 53
-3E 3D 85 12 00 38 BE 97 02 53 3C 00 85 12 00 34
-3A 97 03 30 3E 3D 85 12 00 30 D2 97 02 30 3C 00
-85 12 00 30 00 00 02 55 3C 00 85 12 00 2C E6 97
-03 55 3E 3D 85 12 00 28 DC 97 03 30 3C 3E 85 12
-00 24 FA 97 02 30 3D 00 85 12 00 20 58 84 02 49
-46 00 1A 42 CC 21 8A 4E 00 00 A2 53 CC 21 0E 4A
-30 4D F0 97 04 54 48 45 4E 00 1A 42 CC 21 08 4E
-3E 4F 09 48 29 53 0A 89 0A 11 3A 90 00 02 68 2F
-88 DA 00 00 30 4D B8 95 04 45 4C 53 45 00 1A 42
-CC 21 BA 40 00 3C 00 00 A2 53 CC 21 2F 83 8F 4A
-00 00 E3 3F 24 98 05 55 4E 54 49 4C 3A 4F 08 4E
-3E 4F 19 42 CC 21 2A 83 0A 89 0A 11 3A 90 00 FE
-47 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53 CC 21
-30 4D 3C 96 05 41 47 41 49 4E 0D 12 87 12 B8 97
-6C 98 22 80 00 00 05 57 48 49 4C 45 0D 12 87 12
-12 98 70 80 22 80 C8 97 06 52 45 50 45 41 54 00
-0D 12 87 12 B8 97 6C 98 2A 98 22 80 CE 98 3D 41
-08 4E 3E 4F 2A 48 0A 93 04 20 98 42 CC 21 00 00
-30 4D 88 43 00 00 C3 3F D2 96 03 42 57 31 84 12
-CC 98 00 00 EA 98 03 42 57 32 84 12 CC 98 00 00
-F6 98 03 42 57 33 84 12 CC 98 00 00 0E 99 3D 41
-1A 42 CC 21 28 4E 08 93 08 20 BA 4F 00 00 A2 53
-CC 21 8E 4A 00 00 3E 4F 30 4D 8E 43 00 00 80 3F
-00 00 03 46 57 31 84 12 0C 99 00 00 32 99 03 46
-57 32 84 12 0C 99 00 00 3E 99 03 46 57 33 84 12
-0C 99 00 00 3E 90 00 30 07 24 3E E0 00 04 3E B0
-00 10 02 24 3E E0 00 08 30 4D 4A 99 04 47 4F 54
-4F 00 0D 12 87 12 B8 97 60 8A 26 88 22 80 00 00
-05 3F 47 4F 54 4F 0D 12 87 12 54 99 60 8A 26 88
-22 80 00 00 03 4A 4D 50 0D 12 87 12 60 8A 9A 98
-22 80 80 99 04 3F 4A 4D 50 00 0D 12 87 12 54 99
-60 8A 70 80 6C 98 22 80 42 8D 07 7B 54 4F 4F 4C
-53 7D 30 4D B8 92 03 41 4E 44 3E FF 30 4D C6 8F
-02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF
-3E 40 80 20 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F
-0E 11 0D 12 87 12 2C 80 3C 00 D2 84 5E 83 2C 80
-08 00 D2 84 2C 80 3E 00 D2 84 08 85 82 80 82 80
-8E 81 BA 81 1C 9A 5A 80 5A 80 22 80 C0 81 F8 81
-EA 80 26 83 2C 80 02 00 D0 81 1E 9A 22 80 D0 99
-03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 20
-D2 3F CA 86 01 3F 2E 4E 30 40 26 83 52 90 03 50
-41 44 85 12 E4 20 0E 91 05 57 4F 52 44 53 0D 12
-87 12 84 85 2C 80 03 00 1E 85 2C 80 D0 21 EA 80
-52 9A 2C 80 10 00 3C 80 18 81 F6 8E 2C 80 00 00
-3C 80 2C 80 10 00 3C 80 18 81 2C 80 00 00 C0 81
-3C 80 F8 81 52 9A 18 81 EA 80 A4 81 B0 81 AE 9A
-5A 80 5A 80 F8 81 3C 80 52 9A 18 81 EA 80 2C 80
-02 00 D0 81 90 9A 4C 80 B0 81 F0 9A 3C 80 2C 80
-02 00 20 81 EA 80 92 80 52 9A 18 81 F2 80 3C 80
-78 88 2C 80 7F 00 CA 99 40 85 00 81 2C 80 0F 00
-CA 99 2C 80 10 00 70 80 20 81 1E 85 AC 81 7C 9A
-5A 80 22 80 F0 8E 03 4D 41 58 2E 9F 07 38 2F 53
-30 4D F6 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
-04 8E 03 55 2E 52 0D 12 87 12 A8 80 42 82 2C 80
-00 00 A2 82 D4 82 F0 82 B4 80 82 80 20 81 2C 80
-00 00 FA 9A 1E 85 40 85 22 80 D4 8F 04 44 55 4D
-50 00 0D 12 12 12 E2 21 B2 40 10 00 E2 21 2E 5F
-87 12 70 80 82 80 82 80 26 83 2C 80 01 00 20 81
-26 83 2C 80 FE FF CA 99 C0 81 84 85 F8 81 2C 80
-07 00 16 9B 08 85 F8 81 2C 80 10 00 18 81 F8 81
-C0 81 F8 81 00 81 2C 80 03 00 16 9B E2 81 82 9B
-08 85 08 85 F8 81 2C 80 10 00 18 81 F8 81 C0 81
-F8 81 00 81 2C 80 7E 00 08 9B 20 82 FA 9A D2 84
-E2 81 A0 9B 2C 80 10 00 D0 81 6A 9B B4 80 2C 82
-F2 80 22 80
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 80 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC 82 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 82 03 4B 45 59 30 40 B0 83
+18 42 8C 05 2F 83 8F 4E 00 00 B0 12 24 84 92 B3
+9C 05 FD 27 1E 42 8C 05 B0 12 36 84 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 83 06 41 43 43 45 50 54 00
+3C 40 92 84 3B 40 5C 84 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 84 92 B3 9C 05
+05 24 18 42 8C 05 38 90 0A 00 04 20 21 53 39 40
+4A 84 4D 15 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05
+D2 C3 03 02 30 41 B2 40 13 00 8E 05 D2 D3 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 84 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 8C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 9C 05 FD 27
+82 48 8E 05 30 4D 88 84 2D 83 92 B3 9C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C 83 04 45 4D 49 54 00
+30 40 B4 84 08 4E 3E 4F E0 3F AA 84 04 45 43 48
+4F 00 B2 40 82 48 80 84 82 43 DE 21 30 4D 5C 83
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 84 92 43
+DE 21 30 4D 0E 83 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 84 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 85 EF 3F 10 85
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 83 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 85 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 85 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 83 02 43
+52 00 30 40 56 85 0D 12 87 12 64 85 02 0D 0A 00
+24 85 22 80 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 85 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A 85 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA 84 82 53 22 00
+0D 12 87 12 2C 80 64 85 0C 88 94 85 2C 80 22 00
+E8 85 82 85 B6 85 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 84 82 2E
+22 00 0D 12 87 12 A0 85 2C 80 24 85 0C 88 22 80
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 80 34 40
+0C 80 30 4D 8C 81 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 87 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 87 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 82 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 84 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 81 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A 88 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C 80 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 85 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 88 20 82 E8 85 7E 88 3D 40
+86 88 E1 22 48 3E 88 88 0A 4E 3E 4F 3D 40 9E 88
+37 27 3D 40 78 88 1A E2 BE 21 B8 27 B2 23 A0 88
+3E 4F 3D 40 78 88 BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 8B CC 3F FA 87 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 88 DA 88 B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 81 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 85 05 0D 0A 6F 6B 20 24 85
+CE 83 EC 84 72 88 D6 80 68 81 64 85 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 89 2C 80 30 FF
+74 83 A4 81 64 85 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 89 38 82 EA 80 B0 81 06 89 64 85 05 0D
+0A 20 20 20 AC 81 0E 89 E8 83 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 90 B0 90 B2 40 4E 84
+4C 84 B2 40 B4 84 B2 84 B2 40 56 85 54 85 B2 40
+B0 83 AE 83 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 84 B0 12
+72 89 A2 B3 9C 05 FD 27 B2 40 11 00 8E 05 D2 C3
+03 02 92 C3 9C 05 38 40 F0 FF 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 9C 05 F3 23 0D 12 87 12
+64 85 04 1B 5B 37 6D 00 24 85 2C 80 DE 21 EA 80
+4C 80 B0 81 06 8A 64 85 05 6C 69 6E 65 3A 24 85
+38 81 26 83 C2 84 24 85 64 85 04 1B 5B 30 6D 00
+24 85 2A 90 82 85 60 89 5A 89 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 85 2C 80 9C 89 0C 88 22 80
+40 86 01 27 0D 12 87 12 20 82 E8 85 46 86 B0 81
+44 8A 22 80 A8 88 3E 82 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 8A 01 5D
+B2 43 BE 21 30 4D 54 8A 83 5B 27 5D 0D 12 87 12
+34 8A 2C 80 2C 80 0C 88 0C 88 22 80 BE 4F 02 00
+3E 4F 30 4D 6E 83 82 49 53 00 0D 12 87 12 38 82
+EA 80 B0 81 A0 8A 6C 8A 2C 80 7C 8A 0C 88 22 80
+34 8A 7C 8A 22 80 86 8A 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C 85
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC 88 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 82 E8 85 46 86 4C 80
+B0 81 44 8A 68 81 B0 81 06 8B 2C 80 2C 80 0C 88
+0C 88 2C 80 0C 88 0C 88 22 80 82 9F BC 21 40 25
+0D 12 87 12 64 85 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 89 68 8A 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C 80 22 80 0C 88 0A 8B 56 8A
+22 80 2A 8B 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 8B BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 8B 01 3A 30 12
+64 8B 0D 12 87 12 C2 85 20 82 E8 85 8E 8B 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 8B 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 85 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 8B BA 40 86 12 FC FF DC 3C
+4E 88 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 8B
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 8B
+06 43 52 45 41 54 45 00 B0 12 82 8B BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 88 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 8C 05 44 45 46 45 52 B0 12 82 8B AC 3C
+A6 86 05 3E 42 4F 44 59 2E 52 30 4D 00 8C 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 8B
+86 5B 54 48 45 4E 5D 00 30 4D 80 8C 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 80 01 00 20 82 E8 85
+54 88 3C 80 B0 81 00 8D 82 80 82 80 64 85 04 5B
+49 46 5D 00 56 8C BA 81 C2 8C 46 85 2E 81 AC 81
+F8 8C 82 80 82 80 64 85 06 5B 45 4C 53 45 5D 00
+56 8C BA 81 E6 8C 46 85 38 81 3C 80 B0 81 F8 8C
+2E 81 AC 81 F8 8C 64 85 06 5B 54 48 45 4E 5D 00
+56 8C BA 81 F8 8C 38 81 4C 80 BA 81 9C 8C 22 80
+46 85 64 85 05 0D 0A 6B 6F 20 24 85 CE 83 62 88
+AC 81 9C 8C 8C 8C 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 8D 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 82 E8 85 46 86 64 80 22 80 26 8D
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 8D 5C 81 22 80 58 8D 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 88 06 4D 41 52 4B 45 52 00
+B0 12 82 8B BA 40 84 12 FC FF BA 40 56 8D FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 8A 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 81 00 00 2E 53 30 4D
+34 8C 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC 81 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 85 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E 8C 85 42 45 47 49 4E 30 40 74 83 E2 8D
+85 55 4E 54 49 4C 39 40 B0 81 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 8A
+85 41 47 41 49 4E 39 40 AC 81 EF 3F CA 8B 85 57
+48 49 4C 45 0D 12 87 12 A8 8D 70 80 22 80 C0 8A
+86 52 45 50 45 41 54 00 0D 12 87 12 26 8E E8 8D
+22 80 C2 8D 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 81 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 8D 84 4C 4F 4F
+50 00 39 40 E2 81 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 83
+85 2B 4C 4F 4F 50 39 40 D0 81 E5 3F 7C 8E 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 81 00 00 BA 40
+AC 81 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE 8E 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 8E 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 8C 2C 80 10 00 2C 80 00 00 C0 81
+2C 80 00 00 0C 88 E2 81 40 8F 74 83 2C 80 C8 21
+3C 80 EA 80 0C 88 F2 80 20 8C 2C 80 CA 21 F2 80
+22 80 32 8A 05 46 4F 52 54 48 84 12 5A 8F 88 99
+FE 92 FE 9A 64 8F 5A 92 B0 8E C6 9A F2 99 10 9A
+68 90 D4 9A 1A 9A 00 00 7C 99 5E 8A 06 9A 00 00
+20 8E 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA 8A 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE 85 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 8E
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A 8F C8 8F DC 8F EC 8F 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 8F
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 8F 56 92
+86 9B 40 8E 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 90 92 42 0C 18 30 90 EF 3F 20 90 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E 90 92 42
+C6 21 30 90 30 4D 34 90 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 8F 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 89 B2 40 86 9B 0C 18 B2 40
+56 92 0E 18 CC 3F 82 90 04 57 41 52 4D 00 30 40
+B2 90 1E 42 08 18 0D 12 87 12 64 85 06 0D 1B 5B
+37 6D 23 00 24 85 5E 83 64 85 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 85 2C 80 30 FF
+74 83 20 81 26 83 64 85 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 89 F4 8D 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 92 D3
+04 02 B2 40 FE FF 02 02 D2 D3 03 02 F2 43 22 02
+F2 D3 26 02 F2 D0 BF 00 47 02 F2 40 BF 00 43 02
+F2 40 40 00 45 02 F2 40 A5 00 A1 01 F2 40 20 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BE 00 82 01 B2 40 DC 02 84 01 39 40
+80 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 32 00 29 83 B9 40 14 91 CE FF FB 23 B2 40
+54 84 E2 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 80 36 40 B4 80 35 40 00 80 34 40 0C 80 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B2 21 02 04 20 38 E3 18 53 82 48 08 18 B2 40
+81 00 80 05 92 42 02 18 86 05 92 42 04 18 88 05
+F2 D0 0C 00 2B 02 92 C3 80 05 92 D3 9A 05 3D 40
+24 92 38 90 0A 00 38 27 38 90 16 00 35 2F 28 93
+0E 23 03 27 AE 90 92 8F 09 41 53 53 45 4D 42 4C
+45 52 84 12 5A 8F 56 98 C4 98 0A 98 2E 99 D0 97
+56 99 EA 94 00 00 C6 97 7A 98 28 98 68 98 FA 95
+00 00 00 00 66 99 8E 8F A4 8D 85 48 49 32 4C 4F
+0D 12 87 12 74 83 BC 8D 0C 88 56 8A 98 8F 32 92
+22 80 08 91 04 43 4F 44 45 00 B0 12 82 8B A2 82
+C6 21 0D 12 87 12 74 8B AC 81 6C 92 00 00 07 45
+4E 44 43 4F 44 45 0D 12 87 12 B2 8F 0A 8B 22 80
+28 92 03 41 53 4D 92 42 DA 21 E0 21 B2 40 36 92
+DA 21 E3 3F 8E 92 06 45 4E 44 41 53 4D 00 92 42
+E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
+C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
+C6 21 B2 43 BE 21 30 40 B2 8F 00 00 05 4C 4F 32
+48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 74 92 07 43
+4F 44 45 4E 4E 4D 0D 12 87 12 4C 8B 56 8A 10 93
+3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21 39 48
+2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A FC 27
+1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15 87 12
+E8 85 46 86 BA 81 50 93 00 87 B0 81 44 8A 72 93
+52 93 29 4E 39 90 86 12 02 20 2E 53 0A 3C 39 90
+85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12 01 20
+2E 52 1B 17 30 41 3E 40 28 00 B0 12 3C 93 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00 1C 15
+12 12 C4 21 92 53 C4 21 87 12 E8 85 00 87 B0 81
+AE 93 A4 93 21 53 3E 90 10 00 84 2D E2 2B B0 93
+B2 41 C4 21 DE 3F 0D 12 87 12 20 82 1A 93 C0 93
+0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F FA 90
+23 00 00 00 2D 20 92 53 C4 21 B0 12 3C 93 0E 93
+03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40 10 03
+1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92 03 20
+3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02 0D 3C
+3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00 19 42
+C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41 30 4D
+FA 90 26 00 00 00 07 20 3C 40 10 02 92 53 C4 21
+B0 12 3C 93 EC 3F FA 90 40 00 00 00 16 20 3C 40
+20 00 92 53 C4 21 B0 12 8E 93 0C 20 3C 50 10 00
+3E 40 2B 00 B0 12 8E 93 92 92 C0 21 C4 21 02 24
+92 53 C4 21 8E 10 0C 5E D8 3F B0 12 8E 93 FA 23
+3C 50 10 00 B0 12 76 93 EF 3F 0D 12 87 12 20 82
+1A 93 94 94 FE 90 26 00 00 00 3E 40 20 00 03 20
+3C 50 82 00 CB 3F B0 12 8E 93 E5 23 3C 50 80 00
+B0 12 76 93 E0 3F 44 84 04 52 45 54 49 00 0D 12
+87 12 2C 80 00 13 0C 88 22 80 2C 80 2C 00 B6 93
+8A 94 D4 94 2E 4E 0E DC 09 4B A5 3F EC 92 03 4D
+4F 56 84 12 CA 94 00 40 DE 94 05 4D 4F 56 2E 42
+84 12 CA 94 40 40 00 00 03 41 44 44 84 12 CA 94
+00 50 F8 94 05 41 44 44 2E 42 84 12 CA 94 40 50
+04 95 04 41 44 44 43 00 84 12 CA 94 00 60 12 95
+06 41 44 44 43 2E 42 00 84 12 CA 94 40 60 B8 94
+04 53 55 42 43 00 84 12 CA 94 00 70 30 95 06 53
+55 42 43 2E 42 00 84 12 CA 94 40 70 3E 95 03 53
+55 42 84 12 CA 94 00 80 4E 95 05 53 55 42 2E 42
+84 12 CA 94 40 80 C8 92 03 43 4D 50 84 12 CA 94
+00 90 68 95 05 43 4D 50 2E 42 84 12 CA 94 40 90
+B6 92 04 44 41 44 44 00 84 12 CA 94 00 A0 82 95
+06 44 41 44 44 2E 42 00 84 12 CA 94 40 A0 74 95
+03 42 49 54 84 12 CA 94 00 B0 A0 95 05 42 49 54
+2E 42 84 12 CA 94 40 B0 AC 95 03 42 49 43 84 12
+CA 94 00 C0 BA 95 05 42 49 43 2E 42 84 12 CA 94
+40 C0 C6 95 03 42 49 53 84 12 CA 94 00 D0 D4 95
+05 42 49 53 2E 42 84 12 CA 94 40 D0 00 00 03 58
+4F 52 84 12 CA 94 00 E0 EE 95 05 58 4F 52 2E 42
+84 12 CA 94 40 E0 20 95 03 41 4E 44 84 12 CA 94
+00 F0 08 96 05 41 4E 44 2E 42 84 12 CA 94 40 F0
+20 82 B6 93 26 96 0A 4C 3C F0 70 00 8A 10 3A F0
+0F 00 0C DA 4F 3F 5A 95 03 52 52 43 84 12 20 96
+00 10 38 96 05 52 52 43 2E 42 84 12 20 96 40 10
+44 96 04 53 57 50 42 00 84 12 20 96 80 10 52 96
+03 52 52 41 84 12 20 96 00 11 60 96 05 52 52 41
+2E 42 84 12 20 96 40 11 6C 96 03 53 58 54 84 12
+20 96 80 11 00 00 04 50 55 53 48 00 84 12 20 96
+00 12 86 96 06 50 55 53 48 2E 42 00 84 12 20 96
+40 12 E0 95 04 43 41 4C 4C 00 84 12 20 96 80 12
+1A 53 0E 4A 0D 12 87 12 5E 83 64 85 0D 6F 75 74
+20 6F 66 20 62 6F 75 6E 64 73 A8 89 20 82 1A 93
+D2 96 0C 43 1B 42 C6 21 A2 53 C6 21 92 53 C4 21
+3E 40 2C 00 1C 15 87 12 E8 85 00 87 B0 81 44 8A
+F2 96 1B 17 87 12 8A 94 FA 96 0A 4E 3E 4F 1A 83
+D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28 0C 8A
+08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92 C8 2F
+8A 10 5A 06 86 3F 7A 96 04 52 52 43 4D 00 84 12
+CC 96 50 00 28 97 04 52 52 41 4D 00 84 12 CC 96
+50 01 36 97 04 52 4C 41 4D 00 84 12 CC 96 50 02
+44 97 04 52 52 55 4D 00 84 12 CC 96 50 03 94 96
+05 50 55 53 48 4D 84 12 CC 96 00 15 60 97 04 50
+4F 50 4D 00 84 12 CC 96 00 17 85 12 00 3C 52 97
+03 53 3E 3D 85 12 00 38 80 97 02 53 3C 00 85 12
+00 34 6E 97 03 30 3E 3D 85 12 00 30 94 97 02 30
+3C 00 85 12 00 30 00 00 02 55 3C 00 85 12 00 2C
+A8 97 03 55 3E 3D 85 12 00 28 9E 97 03 30 3C 3E
+85 12 00 24 BC 97 02 30 3D 00 85 12 00 20 00 00
+02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53 C6 21
+0E 4A 30 4D B2 97 04 54 48 45 4E 00 1A 42 C6 21
+08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90 00 02
+58 2F 88 DA 00 00 30 4D 90 95 04 45 4C 53 45 00
+1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21 2F 83
+8F 4A 00 00 E3 3F E6 97 05 55 4E 54 49 4C 3A 4F
+08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11 3A 90
+00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
+C6 21 30 4D 14 96 05 41 47 41 49 4E 0D 12 87 12
+7A 97 2E 98 22 80 00 00 05 57 48 49 4C 45 0D 12
+87 12 D4 97 70 80 22 80 8A 97 06 52 45 50 45 41
+54 00 0D 12 87 12 7A 97 2E 98 EC 97 22 80 90 98
+3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43 00 00
+C7 23 98 42 C6 21 00 00 30 4D A4 96 03 42 57 31
+84 12 8E 98 E2 21 AC 98 03 42 57 32 84 12 8E 98
+E4 21 B8 98 03 42 57 33 84 12 8E 98 E6 21 D0 98
+3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00 08 93
+88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00 3E 4F
+30 4D 00 00 03 46 57 31 84 12 CE 98 E8 21 F4 98
+03 46 57 32 84 12 CE 98 EA 21 00 99 03 46 57 33
+84 12 CE 98 EC 21 3E 90 00 30 07 24 3E E0 00 04
+3E B0 00 10 02 24 3E E0 00 08 30 4D 0C 99 04 47
+4F 54 4F 00 0D 12 87 12 7A 97 34 8A 02 88 22 80
+00 00 05 3F 47 4F 54 4F 0D 12 87 12 16 99 34 8A
+02 88 22 80 00 00 03 4A 4D 50 0D 12 87 12 34 8A
+5C 98 22 80 42 99 04 3F 4A 4D 50 00 0D 12 87 12
+16 99 34 8A 70 80 2E 98 22 80 40 8D 07 7B 54 4F
+4F 4C 53 7D 30 4D A2 92 03 41 4E 44 3E FF 30 4D
+C2 8F 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
+FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80 06 00
+2E 8F 0E 11 0D 12 87 12 2C 80 3C 00 B0 84 5E 83
+2C 80 08 00 B0 84 2C 80 3E 00 B0 84 EC 84 82 80
+82 80 8E 81 BA 81 DE 99 5A 80 5A 80 22 80 C0 81
+F8 81 EA 80 26 83 2C 80 02 00 D0 81 E0 99 22 80
+92 99 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
+E0 20 D2 3F 42 8C 01 3F 2E 4E 30 40 26 83 4E 90
+03 50 41 44 85 12 E4 20 A8 90 05 57 4F 52 44 53
+0D 12 87 12 52 85 2C 80 03 00 02 85 2C 80 CA 21
+EA 80 14 9A 2C 80 10 00 3C 80 18 81 F2 8E 2C 80
+00 00 3C 80 2C 80 10 00 3C 80 18 81 2C 80 00 00
+C0 81 3C 80 F8 81 14 9A 18 81 EA 80 A4 81 B0 81
+70 9A 5A 80 5A 80 F8 81 3C 80 14 9A 18 81 EA 80
+2C 80 02 00 D0 81 52 9A 4C 80 B0 81 B2 9A 3C 80
+2C 80 02 00 20 81 EA 80 92 80 14 9A 18 81 F2 80
+3C 80 54 88 2C 80 7F 00 8C 99 24 85 00 81 2C 80
+0F 00 8C 99 2C 80 10 00 70 80 20 81 02 85 AC 81
+3E 9A 5A 80 22 80 EC 8E 03 4D 41 58 2E 9F 07 38
+2F 53 30 4D B8 9A 03 4D 49 4E 2E 9F F9 3B 3E 4F
+30 4D 00 8E 03 55 2E 52 0D 12 87 12 A8 80 42 82
+2C 80 00 00 A2 82 D4 82 F0 82 B4 80 82 80 20 81
+2C 80 00 00 BC 9A 02 85 24 85 22 80 D0 8F 04 44
+55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00 DC 21
+2E 5F 87 12 70 80 82 80 82 80 26 83 2C 80 01 00
+20 81 26 83 2C 80 FE FF 8C 99 C0 81 52 85 F8 81
+2C 80 07 00 D8 9A EC 84 F8 81 2C 80 10 00 18 81
+F8 81 C0 81 F8 81 00 81 2C 80 03 00 D8 9A E2 81
+44 9B EC 84 EC 84 F8 81 2C 80 10 00 18 81 F8 81
+C0 81 F8 81 00 81 2C 80 7E 00 CA 9A 20 82 BC 9A
+B0 84 E2 81 62 9B 2C 80 10 00 D0 81 2C 9B B4 80
+2C 82 F2 80 22 80
 @FFFE
-26 91
+14 91
 q
index c5579c8..1df5755 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 C8 80 3E 80 04 05 00 18 00 B6 DF 5E D6
-2C C8 3E C8 00 00 00 00
+10 00 08 00 A1 F7 80 3E 05 00 18 00 78 DF 48 D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,399 +55,395 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 40 C9 08 C9 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 40 C9 08 C9 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 3E C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 A4 C8 3B 40 6E C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 52 C8 4D 15 A2 B3 1C 05
-FD 27 B2 40 11 00 0E 05 D2 C3 02 02 30 41 B2 40
-13 00 0E 05 D2 D3 02 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C8 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 0C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05
-FD 27 82 48 0E 05 30 4D 9A C8 2D 83 92 B3 1C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 C7 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C7 04 45 4D 49
-54 00 30 40 C4 C8 CC C8 04 45 43 48 4F 00 B2 40
-82 48 92 C8 82 43 E4 21 30 4D 5C C7 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C8 92 43 E4 21 30 4D
-0E C7 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C9 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C9 EF 3F 2C C9 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C7 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C9 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C9 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C8 04 28 43 52 29 00
-0D 12 87 12 88 C9 02 0D 0A 00 40 C9 22 C4 92 C7
-02 43 52 00 30 40 70 C9 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C9 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E C9 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 C9
-82 53 22 00 0D 12 87 12 2C C4 88 C9 30 CC B8 C9
-2C C4 22 00 0C CA A6 C9 DA C9 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC C8 82 2E 22 00 0D 12 87 12 C4 C9 2C C4 40 C9
-30 CC 22 C4 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C4 34 40 0C C4 30 4D 8C C5 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 CB 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 CB 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C8 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E CC 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C C4 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C9 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 CC 20 C6 0C CA
-A2 CC 3D 40 AA CC E1 22 44 3E AC CC 0A 4E 3E 4F
-3D 40 C2 CC 37 27 3D 40 9C CC 1A E2 BE 21 B8 27
-B2 23 C4 CC 3E 4F 3D 40 9C CC BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CF CC 3F
-1E CC 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 CC FE CC B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 C5
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 C9 05 0D 0A 6F
-6B 20 40 C9 D6 C7 08 C9 96 CC D6 C4 68 C5 88 C9
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CD
-2C C4 30 FF 74 C7 A4 C5 88 C9 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CD 38 C6 EA C4 B0 C5 2A CD
-88 C9 05 0D 0A 20 20 20 AC C5 32 CD F0 C7 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 D4 16 D5
-B2 40 60 C8 54 C8 B2 40 C4 C8 D4 C8 B2 40 70 C9
-86 C9 B2 40 AE C7 D4 C7 82 43 E4 DC 82 43 F0 DC
-82 43 FC DC 82 43 2C DD 82 43 38 DD 82 43 44 DD
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C8 B0 12 96 CD A2 B3
-1C 05 FD 27 B2 40 11 00 0E 05 D2 C3 02 02 92 C3
-1C 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 1C 05 F3 23 0D 12 87 12 88 C9 04 1B
-5B 37 6D 00 40 C9 2C C4 E4 21 EA C4 4C C4 B0 C5
-32 CE 88 C9 05 6C 69 6E 65 3A 40 C9 38 C5 26 C7
-DE C8 40 C9 88 C9 04 1B 5B 30 6D 00 40 C9 2E D4
-A6 C9 84 CD 7E CD 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C9 2C C4 C8 CD 30 CC 22 C4 64 CA 01 27
-0D 12 87 12 20 C6 0C CA 6A CA B0 C5 70 CE 22 C4
-CC CC 3E C6 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 CE 01 5D B2 43 BE 21
-30 4D 80 CE 83 5B 27 5D 0D 12 87 12 60 CE 2C C4
-2C C4 30 CC 30 CC 22 C4 BE 4F 02 00 3E 4F 30 4D
-6A C9 82 49 53 00 0D 12 87 12 38 C6 EA C4 B0 C5
-CC CE 98 CE 2C C4 A8 CE 30 CC 22 C4 60 CE A8 CE
-22 C4 B2 CE 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 C9 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 CD 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C6 0C CA 6A CA 4C C4 B0 C5 70 CE
-68 C5 B0 C5 32 CF 2C C4 2C C4 30 CC 30 CC 2C C4
-30 CC 30 CC 22 C4 82 9F BC 21 2C 25 0D 12 87 12
-88 C9 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CD 94 CE 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C C4 22 C4 30 CC 36 CF 82 CE 22 C4 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 CF 01 3A 30 12 6E CF 0D 12 87 12
-E6 C9 20 C6 0C CA 98 CF 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 CA 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CF BA 40 86 12 FC FF DF 3C 72 CC
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CF BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CF 06 43
-52 45 41 54 45 00 B0 12 8C CF BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CC 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 D0 05 44 45 46 45 52 B0 12 8C CF BA 40 30 40
-FC FF BA 40 2E D0 FE FF A9 3C FE CF 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CF 86 5B
-54 48 45 4E 5D 00 30 4D 7E D0 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C4 01 00 20 C6 0C CA 78 CC
-3C C4 B0 C5 FE D0 82 C4 82 C4 88 C9 04 5B 49 46
-5D 00 54 D0 BA C5 C0 D0 62 C9 2E C5 AC C5 F6 D0
-82 C4 82 C4 88 C9 06 5B 45 4C 53 45 5D 00 54 D0
-BA C5 E4 D0 62 C9 38 C5 3C C4 B0 C5 F6 D0 2E C5
-AC C5 F6 D0 88 C9 06 5B 54 48 45 4E 5D 00 54 D0
-BA C5 F6 D0 38 C5 4C C4 BA C5 9A D0 22 C4 62 C9
-88 C9 05 0D 0A 6B 6F 20 40 C9 D6 C7 86 CC AC C5
-9A D0 8A D0 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 D1 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 0C CA 6A CA 64 C4 5C C5 22 C4
-24 D1 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C6 0C CA 6A CA 64 C4 22 C4 5C D1 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CC 06 4D 41 52
-4B 45 52 00 B0 12 8C CF BA 40 84 12 FC FF BA 40
-5A D1 FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 CE 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 C5 00 00
-2E 53 30 4D 32 D0 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C9 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C D0 85 42 45 47 49 4E 30 40
-74 C7 E6 D1 85 55 4E 54 49 4C 39 40 B0 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CE 85 41 47 41 49 4E 39 40 AC C5 EF 3F
-C8 CF 85 57 48 49 4C 45 0D 12 87 12 AC D1 70 C4
-22 C4 EC CE 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D2 EC D1 22 C4 C6 D1 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 C5 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C D1
-84 4C 4F 4F 50 00 39 40 E2 C5 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C7 85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F
-80 D2 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 C5
-00 00 BA 40 AC C5 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 D2
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D2 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 D0 2C C4 10 00 2C C4
-00 00 C0 C5 2C C4 00 00 30 CC E2 C5 44 D3 74 C7
-2C C4 CE 21 3C C4 EA C4 30 CC F2 C4 1E D0 2C C4
-D0 21 F2 C4 22 C4 5E CE 05 46 4F 52 54 48 84 12
-5E D3 B8 DD 7C D6 2E DF 68 D3 62 D6 B4 D2 F6 DE
-22 DE 40 DE 6C D4 04 DF 4A DE 00 00 AC DD 8A CE
-36 DE 00 00 24 D2 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 CF 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 C9 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 D2 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E D3 CC D3 E0 D3 F0 D3
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D3 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D3 5E D6 B6 DF 44 D2 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D4 92 42 0C 18 34 D4 EF 3F
-24 D4 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 D4 92 42 CC 21 34 D4 30 4D 38 D4 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 D3 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 DA FF FA 23 B0 12 8A CD
-B2 40 B6 DF 0C 18 B2 40 5E D6 0E 18 CA 3F A8 D1
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C9 06 0D 1B 5B 37 6D 23 00 40 C9 5E C7 88 C9
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C9 2C C4 30 FF 74 C7 20 C5 26 C7 88 C9 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CD 86 D4 04 57
-41 52 4D 00 30 40 B8 D4 F8 D1 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02
-B2 D0 03 00 04 02 B2 40 FC FF 02 02 92 D3 02 02
-F2 43 22 02 F2 D3 26 02 F2 40 A5 00 A1 01 F2 40
-10 00 A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40
-FF 1E 80 01 B2 40 BA 00 82 01 B2 40 E8 01 84 01
-39 40 00 01 82 43 88 01 92 D2 5E 01 08 18 A2 93
-08 18 01 24 49 07 38 40 59 14 18 83 FE 23 19 83
-FA 23 3A 40 26 D5 39 40 DA FF 89 4A 00 00 29 53
-FC 23 92 42 02 18 E4 FF B2 40 18 00 0A 18 39 40
-00 20 89 43 00 00 29 53 39 90 FF 2F FA 2B 31 40
-E0 20 3F 40 80 20 37 40 22 C4 36 40 B4 C4 35 40
-00 C4 34 40 0C C4 B2 40 0A 00 E2 21 B2 43 B4 21
-92 C3 30 01 18 42 08 18 F2 B0 10 00 00 02 04 20
-38 E3 18 53 82 48 08 18 B2 40 81 00 00 05 B2 42
-06 05 B2 40 A1 F7 08 05 F2 D0 30 00 0A 02 92 C3
-00 05 92 D3 1A 05 3D 40 2C D6 38 90 0A 00 36 27
-38 90 16 00 33 2F 28 93 0C 23 01 27 14 D5 96 D3
-09 41 53 53 45 4D 42 4C 45 52 84 12 5E D3 86 DC
-F4 DC 3A DC 5E DD 00 DC 86 DD 04 D9 00 00 F6 DB
-AA DC 58 DC 98 DC 14 DA 00 00 00 00 96 DD 92 D3
-B0 D4 85 48 49 32 4C 4F 0D 12 87 12 74 C7 C0 D1
-30 CC 82 CE 9C D3 3A D6 22 C4 1A D5 04 43 4F 44
-45 00 B0 12 8C CF A2 82 CC 21 0D 12 87 12 7E CF
-AC C5 74 D6 00 00 07 45 4E 44 43 4F 44 45 0D 12
-87 12 B6 D3 36 CF 22 C4 30 D6 03 41 53 4D 92 42
-E0 21 C0 21 B2 40 3E D6 E0 21 E3 3F 96 D6 06 45
-4E 44 41 53 4D 00 92 42 C0 21 E0 21 E8 3F 00 00
-05 43 4F 4C 4F 4E 1A 42 CC 21 BA 40 0D 12 00 00
-BA 40 87 12 02 00 A2 52 CC 21 B2 43 BE 21 30 40
-B6 D3 00 00 05 4C 4F 32 48 49 A2 83 CC 21 1A 42
-CC 21 EE 3F 38 40 C6 21 39 48 2A 48 09 5A 1A 52
-CA 21 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
-82 4A CA 21 30 4D 87 12 0C CA 6A CA BA C5 38 D7
-24 CB B0 C5 70 CE 5A D7 3A D7 29 4E 39 90 86 12
-02 20 2E 53 30 41 39 90 85 12 03 20 1E 4E 02 00
-30 41 39 90 84 12 01 20 2E 52 30 41 19 42 CC 21
-A2 53 CC 21 89 4E 00 00 3E 40 29 00 12 12 CA 21
-92 53 CA 21 87 12 0C CA 24 CB B0 C5 8A D7 80 D7
-21 53 3E 90 10 00 BE 2D 30 41 8C D7 B2 41 CA 21
-22 D3 30 41 0D 12 87 12 20 C6 04 D7 9E D7 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 0A 4E 3E 4F
-FA 90 23 00 00 00 34 20 92 53 CA 21 B0 12 26 D7
-0E 93 04 20 B2 40 00 03 C4 21 27 3C 1E 93 04 20
-B2 40 10 03 C4 21 21 3C 2E 93 04 20 B2 40 20 03
-C4 21 1B 3C 2E 92 04 20 B2 40 20 02 C4 21 15 3C
-3E 92 04 20 B2 40 30 02 C4 21 0F 3C 3E 93 04 20
-B2 40 30 03 C4 21 09 3C B2 40 30 00 C4 21 19 42
-CC 21 A2 53 CC 21 89 4E 00 00 3E 4F 3D 41 30 4D
-FA 90 26 00 00 00 08 20 B2 40 10 02 C4 21 92 53
-CA 21 B0 12 26 D7 EB 3F FA 90 40 00 00 00 1A 20
-B2 40 20 00 C4 21 92 53 CA 21 B0 12 6C D7 0E 20
-B2 50 10 00 C4 21 3E 40 2B 00 B0 12 6C D7 33 24
-92 92 C6 21 CA 21 02 24 92 53 CA 21 8E 10 82 5E
-C4 21 D3 3F B0 12 6C D7 F9 23 B2 50 10 00 C4 21
-3E 40 28 00 B0 12 26 D7 B0 12 5C D7 E8 3F 0D 12
-87 12 20 C6 04 D7 98 D8 FE 90 26 00 00 00 3E 40
-20 00 04 20 B2 50 82 00 C4 21 C1 3F B0 12 6C D7
-DE 23 B2 50 80 00 C4 21 3E 40 28 00 B0 12 26 D7
-B0 12 5C D7 D4 23 3D 40 70 CE 30 4D 4C C8 04 52
-45 54 49 00 0D 12 87 12 2C C4 00 13 30 CC 22 C4
-2C C4 2C 00 94 D7 8E D8 EA D8 2E 4E 1E D2 C4 21
-19 42 C2 21 90 3F F4 D6 03 4D 4F 56 84 12 E0 D8
-00 40 F8 D8 05 4D 4F 56 2E 42 84 12 E0 D8 40 40
-00 00 03 41 44 44 84 12 E0 D8 00 50 12 D9 05 41
-44 44 2E 42 84 12 E0 D8 40 50 1E D9 04 41 44 44
-43 00 84 12 E0 D8 00 60 2C D9 06 41 44 44 43 2E
-42 00 84 12 E0 D8 40 60 CE D8 04 53 55 42 43 00
-84 12 E0 D8 00 70 4A D9 06 53 55 42 43 2E 42 00
-84 12 E0 D8 40 70 58 D9 03 53 55 42 84 12 E0 D8
-00 80 68 D9 05 53 55 42 2E 42 84 12 E0 D8 40 80
-D0 D6 03 43 4D 50 84 12 E0 D8 00 90 82 D9 05 43
-4D 50 2E 42 84 12 E0 D8 40 90 BE D6 04 44 41 44
-44 00 84 12 E0 D8 00 A0 9C D9 06 44 41 44 44 2E
-42 00 84 12 E0 D8 40 A0 8E D9 03 42 49 54 84 12
-E0 D8 00 B0 BA D9 05 42 49 54 2E 42 84 12 E0 D8
-40 B0 C6 D9 03 42 49 43 84 12 E0 D8 00 C0 D4 D9
-05 42 49 43 2E 42 84 12 E0 D8 40 C0 E0 D9 03 42
-49 53 84 12 E0 D8 00 D0 EE D9 05 42 49 53 2E 42
-84 12 E0 D8 40 D0 00 00 03 58 4F 52 84 12 E0 D8
-00 E0 08 DA 05 58 4F 52 2E 42 84 12 E0 D8 40 E0
-3A D9 03 41 4E 44 84 12 E0 D8 00 F0 22 DA 05 41
-4E 44 2E 42 84 12 E0 D8 40 F0 20 C6 94 D7 40 DA
-1A 42 C4 21 B2 F0 70 00 C4 21 8A 10 3A F0 0F 00
-82 DA C4 21 4A 3F 74 D9 03 52 52 43 84 12 3A DA
-00 10 58 DA 05 52 52 43 2E 42 84 12 3A DA 40 10
-64 DA 04 53 57 50 42 00 84 12 3A DA 80 10 72 DA
-03 52 52 41 84 12 3A DA 00 11 80 DA 05 52 52 41
-2E 42 84 12 3A DA 40 11 8C DA 03 53 58 54 84 12
-3A DA 80 11 00 00 04 50 55 53 48 00 84 12 3A DA
-00 12 A6 DA 06 50 55 53 48 2E 42 00 84 12 3A DA
-40 12 FA D9 04 43 41 4C 4C 00 84 12 3A DA 80 12
-2C C4 2C 00 94 D7 8E D8 DA DA 59 42 C4 21 5A 42
-C5 21 82 4A C4 21 BE 90 00 15 00 00 02 20 0A 89
-02 3C 09 8A 0A 49 3A 90 10 00 03 2C 5A 0E A8 3F
-1A 53 0E 4A 0D 12 87 12 5E C7 88 C9 0D 6F 75 74
-20 6F 66 20 62 6F 75 6E 64 73 D4 CD B4 DA 05 50
-55 53 48 4D 84 12 D0 DA 00 15 1E DB 04 50 4F 50
-4D 00 84 12 D0 DA 00 17 20 C6 04 D7 3E DB 82 43
-C4 21 92 42 CC 21 C2 21 A2 53 CC 21 92 53 CA 21
-3E 40 2C 00 87 12 0C CA 24 CB B0 C5 70 CE 8E D8
-62 DB 0A 4E 3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06
-6F 3F 9A DA 04 52 52 43 4D 00 84 12 38 DB 50 00
-74 DB 04 52 52 41 4D 00 84 12 38 DB 50 01 82 DB
-04 52 4C 41 4D 00 84 12 38 DB 50 02 90 DB 04 52
-52 55 4D 00 84 12 38 DB 50 03 85 12 00 3C 9E DB
-03 53 3E 3D 85 12 00 38 B0 DB 02 53 3C 00 85 12
-00 34 2C DB 03 30 3E 3D 85 12 00 30 C4 DB 02 30
-3C 00 85 12 00 30 00 00 02 55 3C 00 85 12 00 2C
-D8 DB 03 55 3E 3D 85 12 00 28 CE DB 03 30 3C 3E
-85 12 00 24 EC DB 02 30 3D 00 85 12 00 20 58 C8
-02 49 46 00 1A 42 CC 21 8A 4E 00 00 A2 53 CC 21
-0E 4A 30 4D E2 DB 04 54 48 45 4E 00 1A 42 CC 21
-08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90 00 02
-68 2F 88 DA 00 00 30 4D AA D9 04 45 4C 53 45 00
-1A 42 CC 21 BA 40 00 3C 00 00 A2 53 CC 21 2F 83
-8F 4A 00 00 E3 3F 16 DC 05 55 4E 54 49 4C 3A 4F
-08 4E 3E 4F 19 42 CC 21 2A 83 0A 89 0A 11 3A 90
-00 FE 47 3B 3A F0 FF 03 08 DA 89 48 00 00 A2 53
-CC 21 30 4D 2E DA 05 41 47 41 49 4E 0D 12 87 12
-AA DB 5E DC 22 C4 00 00 05 57 48 49 4C 45 0D 12
-87 12 04 DC 70 C4 22 C4 BA DB 06 52 45 50 45 41
-54 00 0D 12 87 12 AA DB 5E DC 1C DC 22 C4 C0 DC
-3D 41 08 4E 3E 4F 2A 48 0A 93 04 20 98 42 CC 21
-00 00 30 4D 88 43 00 00 C3 3F C4 DA 03 42 57 31
-84 12 BE DC 00 00 DC DC 03 42 57 32 84 12 BE DC
-00 00 E8 DC 03 42 57 33 84 12 BE DC 00 00 00 DD
-3D 41 1A 42 CC 21 28 4E 08 93 08 20 BA 4F 00 00
-A2 53 CC 21 8E 4A 00 00 3E 4F 30 4D 8E 43 00 00
-80 3F 00 00 03 46 57 31 84 12 FE DC 00 00 24 DD
-03 46 57 32 84 12 FE DC 00 00 30 DD 03 46 57 33
-84 12 FE DC 00 00 3E 90 00 30 07 24 3E E0 00 04
-3E B0 00 10 02 24 3E E0 00 08 30 4D 3C DD 04 47
-4F 54 4F 00 0D 12 87 12 AA DB 60 CE 26 CC 22 C4
-00 00 05 3F 47 4F 54 4F 0D 12 87 12 46 DD 60 CE
-26 CC 22 C4 00 00 03 4A 4D 50 0D 12 87 12 60 CE
-8C DC 22 C4 72 DD 04 3F 4A 4D 50 00 0D 12 87 12
-46 DD 60 CE 70 C4 5E DC 22 C4 42 D1 07 7B 54 4F
-4F 4C 53 7D 30 4D AA D6 03 41 4E 44 3E FF 30 4D
-C6 D3 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E
-FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80 06 00
-2E 8F 0E 11 0D 12 87 12 2C C4 3C 00 D2 C8 5E C7
-2C C4 08 00 D2 C8 2C C4 3E 00 D2 C8 08 C9 82 C4
-82 C4 8E C5 BA C5 0E DE 5A C4 5A C4 22 C4 C0 C5
-F8 C5 EA C4 26 C7 2C C4 02 00 D0 C5 10 DE 22 C4
-C2 DD 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40
-E0 20 D2 3F CA CA 01 3F 2E 4E 30 40 26 C7 52 D4
-03 50 41 44 85 12 E4 20 0E D5 05 57 4F 52 44 53
-0D 12 87 12 84 C9 2C C4 03 00 1E C9 2C C4 D0 21
-EA C4 44 DE 2C C4 10 00 3C C4 18 C5 F6 D2 2C C4
-00 00 3C C4 2C C4 10 00 3C C4 18 C5 2C C4 00 00
-C0 C5 3C C4 F8 C5 44 DE 18 C5 EA C4 A4 C5 B0 C5
-A0 DE 5A C4 5A C4 F8 C5 3C C4 44 DE 18 C5 EA C4
-2C C4 02 00 D0 C5 82 DE 4C C4 B0 C5 E2 DE 3C C4
-2C C4 02 00 20 C5 EA C4 92 C4 44 DE 18 C5 F2 C4
-3C C4 78 CC 2C C4 7F 00 BC DD 40 C9 00 C5 2C C4
-0F 00 BC DD 2C C4 10 00 70 C4 20 C5 1E C9 AC C5
-6E DE 5A C4 22 C4 F0 D2 03 4D 41 58 2E 9F 07 38
-2F 53 30 4D E8 DE 03 4D 49 4E 2E 9F F9 3B 3E 4F
-30 4D 04 D2 03 55 2E 52 0D 12 87 12 A8 C4 42 C6
-2C C4 00 00 A2 C6 D4 C6 F0 C6 B4 C4 82 C4 20 C5
-2C C4 00 00 EC DE 1E C9 40 C9 22 C4 D4 D3 04 44
-55 4D 50 00 0D 12 12 12 E2 21 B2 40 10 00 E2 21
-2E 5F 87 12 70 C4 82 C4 82 C4 26 C7 2C C4 01 00
-20 C5 26 C7 2C C4 FE FF BC DD C0 C5 84 C9 F8 C5
-2C C4 07 00 08 DF 08 C9 F8 C5 2C C4 10 00 18 C5
-F8 C5 C0 C5 F8 C5 00 C5 2C C4 03 00 08 DF E2 C5
-74 DF 08 C9 08 C9 F8 C5 2C C4 10 00 18 C5 F8 C5
-C0 C5 F8 C5 00 C5 2C C4 7E 00 FA DE 20 C6 EC DE
-D2 C8 E2 C5 92 DF 2C C4 10 00 D0 C5 5C DF B4 C4
-2C C6 F2 C4 22 C4
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+D2 C3 02 02 30 41 B2 40 13 00 0E 05 D2 D3 02 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 D2 C3
+02 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 7A DD
+F0 D6 F0 DE 64 D3 4C D6 B0 D2 B8 DE E4 DD 02 DE
+68 D4 C6 DE 0C DE 00 00 6E DD 5E CE F8 DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 48 D6
+78 DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 78 DF 0C 18 B2 40
+48 D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 B2 D0
+03 00 04 02 B2 40 FC FF 02 02 92 D3 02 02 F2 43
+22 02 F2 D3 26 02 F2 40 A5 00 A1 01 F2 40 10 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BA 00 82 01 B2 40 E8 01 84 01 39 40
+00 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 26 00 29 83 B9 40 14 D5 DA FF FB 23 B2 40
+54 C8 E4 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 C4 36 40 B4 C4 35 40 00 C4 34 40 0C C4 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B0 10 00 00 02 04 20 38 E3 18 53 82 48 08 18
+B2 40 81 00 00 05 92 42 02 18 06 05 92 42 04 18
+08 05 F2 D0 30 00 0A 02 92 C3 00 05 92 D3 1A 05
+3D 40 16 D6 38 90 0A 00 3F 27 38 90 16 00 3C 2F
+28 93 15 23 0A 27 AE D4 92 D3 09 41 53 53 45 4D
+42 4C 45 52 84 12 5A D3 48 DC B6 DC FC DB 20 DD
+C2 DB 48 DD DC D8 00 00 B8 DB 6C DC 1A DC 5A DC
+EC D9 00 00 00 00 58 DD 8E D3 A4 D1 85 48 49 32
+4C 4F 0D 12 87 12 74 C7 BC D1 0C CC 56 CE 98 D3
+24 D6 22 C4 08 D5 04 43 4F 44 45 00 B0 12 82 CF
+A2 82 C6 21 0D 12 87 12 74 CF AC C5 5E D6 00 00
+07 45 4E 44 43 4F 44 45 0D 12 87 12 B2 D3 0A CF
+22 C4 1A D6 03 41 53 4D 92 42 DA 21 E0 21 B2 40
+28 D6 DA 21 E3 3F 80 D6 06 45 4E 44 41 53 4D 00
+92 42 E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E
+1A 42 C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00
+A2 52 C6 21 B2 43 BE 21 30 40 B2 D3 00 00 05 4C
+4F 32 48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 66 D6
+07 43 4F 44 45 4E 4E 4D 0D 12 87 12 4C CF 56 CE
+02 D7 3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21
+39 48 2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A
+FC 27 1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15
+87 12 E8 C9 46 CA BA C5 42 D7 00 CB B0 C5 44 CE
+64 D7 44 D7 29 4E 39 90 86 12 02 20 2E 53 0A 3C
+39 90 85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12
+01 20 2E 52 1B 17 30 41 3E 40 28 00 B0 12 2E D7
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00
+1C 15 12 12 C4 21 92 53 C4 21 87 12 E8 C9 00 CB
+B0 C5 A0 D7 96 D7 21 53 3E 90 10 00 84 2D E2 2B
+A2 D7 B2 41 C4 21 DE 3F 0D 12 87 12 20 C6 0C D7
+B2 D7 0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F
+FA 90 23 00 00 00 2D 20 92 53 C4 21 B0 12 2E D7
+0E 93 03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40
+10 03 1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92
+03 20 3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02
+0D 3C 3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41
+30 4D FA 90 26 00 00 00 07 20 3C 40 10 02 92 53
+C4 21 B0 12 2E D7 EC 3F FA 90 40 00 00 00 16 20
+3C 40 20 00 92 53 C4 21 B0 12 80 D7 0C 20 3C 50
+10 00 3E 40 2B 00 B0 12 80 D7 92 92 C0 21 C4 21
+02 24 92 53 C4 21 8E 10 0C 5E D8 3F B0 12 80 D7
+FA 23 3C 50 10 00 B0 12 68 D7 EF 3F 0D 12 87 12
+20 C6 0C D7 86 D8 FE 90 26 00 00 00 3E 40 20 00
+03 20 3C 50 82 00 CB 3F B0 12 80 D7 E5 23 3C 50
+80 00 B0 12 68 D7 E0 3F 44 C8 04 52 45 54 49 00
+0D 12 87 12 2C C4 00 13 0C CC 22 C4 2C C4 2C 00
+A8 D7 7C D8 C6 D8 2E 4E 0E DC 09 4B A5 3F DE D6
+03 4D 4F 56 84 12 BC D8 00 40 D0 D8 05 4D 4F 56
+2E 42 84 12 BC D8 40 40 00 00 03 41 44 44 84 12
+BC D8 00 50 EA D8 05 41 44 44 2E 42 84 12 BC D8
+40 50 F6 D8 04 41 44 44 43 00 84 12 BC D8 00 60
+04 D9 06 41 44 44 43 2E 42 00 84 12 BC D8 40 60
+AA D8 04 53 55 42 43 00 84 12 BC D8 00 70 22 D9
+06 53 55 42 43 2E 42 00 84 12 BC D8 40 70 30 D9
+03 53 55 42 84 12 BC D8 00 80 40 D9 05 53 55 42
+2E 42 84 12 BC D8 40 80 BA D6 03 43 4D 50 84 12
+BC D8 00 90 5A D9 05 43 4D 50 2E 42 84 12 BC D8
+40 90 A8 D6 04 44 41 44 44 00 84 12 BC D8 00 A0
+74 D9 06 44 41 44 44 2E 42 00 84 12 BC D8 40 A0
+66 D9 03 42 49 54 84 12 BC D8 00 B0 92 D9 05 42
+49 54 2E 42 84 12 BC D8 40 B0 9E D9 03 42 49 43
+84 12 BC D8 00 C0 AC D9 05 42 49 43 2E 42 84 12
+BC D8 40 C0 B8 D9 03 42 49 53 84 12 BC D8 00 D0
+C6 D9 05 42 49 53 2E 42 84 12 BC D8 40 D0 00 00
+03 58 4F 52 84 12 BC D8 00 E0 E0 D9 05 58 4F 52
+2E 42 84 12 BC D8 40 E0 12 D9 03 41 4E 44 84 12
+BC D8 00 F0 FA D9 05 41 4E 44 2E 42 84 12 BC D8
+40 F0 20 C6 A8 D7 18 DA 0A 4C 3C F0 70 00 8A 10
+3A F0 0F 00 0C DA 4F 3F 4C D9 03 52 52 43 84 12
+12 DA 00 10 2A DA 05 52 52 43 2E 42 84 12 12 DA
+40 10 36 DA 04 53 57 50 42 00 84 12 12 DA 80 10
+44 DA 03 52 52 41 84 12 12 DA 00 11 52 DA 05 52
+52 41 2E 42 84 12 12 DA 40 11 5E DA 03 53 58 54
+84 12 12 DA 80 11 00 00 04 50 55 53 48 00 84 12
+12 DA 00 12 78 DA 06 50 55 53 48 2E 42 00 84 12
+12 DA 40 12 D2 D9 04 43 41 4C 4C 00 84 12 12 DA
+80 12 1A 53 0E 4A 0D 12 87 12 5E C7 64 C9 0D 6F
+75 74 20 6F 66 20 62 6F 75 6E 64 73 A8 CD 20 C6
+0C D7 C4 DA 0C 43 1B 42 C6 21 A2 53 C6 21 92 53
+C4 21 3E 40 2C 00 1C 15 87 12 E8 C9 00 CB B0 C5
+44 CE E4 DA 1B 17 87 12 7C D8 EC DA 0A 4E 3E 4F
+1A 83 D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28
+0C 8A 08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92
+C8 2F 8A 10 5A 06 86 3F 6C DA 04 52 52 43 4D 00
+84 12 BE DA 50 00 1A DB 04 52 52 41 4D 00 84 12
+BE DA 50 01 28 DB 04 52 4C 41 4D 00 84 12 BE DA
+50 02 36 DB 04 52 52 55 4D 00 84 12 BE DA 50 03
+86 DA 05 50 55 53 48 4D 84 12 BE DA 00 15 52 DB
+04 50 4F 50 4D 00 84 12 BE DA 00 17 85 12 00 3C
+44 DB 03 53 3E 3D 85 12 00 38 72 DB 02 53 3C 00
+85 12 00 34 60 DB 03 30 3E 3D 85 12 00 30 86 DB
+02 30 3C 00 85 12 00 30 00 00 02 55 3C 00 85 12
+00 2C 9A DB 03 55 3E 3D 85 12 00 28 90 DB 03 30
+3C 3E 85 12 00 24 AE DB 02 30 3D 00 85 12 00 20
+00 00 02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53
+C6 21 0E 4A 30 4D A4 DB 04 54 48 45 4E 00 1A 42
+C6 21 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90
+00 02 58 2F 88 DA 00 00 30 4D 82 D9 04 45 4C 53
+45 00 1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21
+2F 83 8F 4A 00 00 E3 3F D8 DB 05 55 4E 54 49 4C
+3A 4F 08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11
+3A 90 00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00
+A2 53 C6 21 30 4D 06 DA 05 41 47 41 49 4E 0D 12
+87 12 6C DB 20 DC 22 C4 00 00 05 57 48 49 4C 45
+0D 12 87 12 C6 DB 70 C4 22 C4 7C DB 06 52 45 50
+45 41 54 00 0D 12 87 12 6C DB 20 DC DE DB 22 C4
+82 DC 3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43
+00 00 C7 23 98 42 C6 21 00 00 30 4D 96 DA 03 42
+57 31 84 12 80 DC E2 21 9E DC 03 42 57 32 84 12
+80 DC E4 21 AA DC 03 42 57 33 84 12 80 DC E6 21
+C2 DC 3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00
+08 93 88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00
+3E 4F 30 4D 00 00 03 46 57 31 84 12 C0 DC E8 21
+E6 DC 03 46 57 32 84 12 C0 DC EA 21 F2 DC 03 46
+57 33 84 12 C0 DC EC 21 3E 90 00 30 07 24 3E E0
+00 04 3E B0 00 10 02 24 3E E0 00 08 30 4D FE DC
+04 47 4F 54 4F 00 0D 12 87 12 6C DB 34 CE 02 CC
+22 C4 00 00 05 3F 47 4F 54 4F 0D 12 87 12 08 DD
+34 CE 02 CC 22 C4 00 00 03 4A 4D 50 0D 12 87 12
+34 CE 4E DC 22 C4 34 DD 04 3F 4A 4D 50 00 0D 12
+87 12 08 DD 34 CE 70 C4 20 DC 22 C4 40 D1 07 7B
+54 4F 4F 4C 53 7D 30 4D 94 D6 03 41 4E 44 3E FF
+30 4D C2 D3 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83
+8F 4E FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80
+06 00 2E 8F 0E 11 0D 12 87 12 2C C4 3C 00 B0 C8
+5E C7 2C C4 08 00 B0 C8 2C C4 3E 00 B0 C8 EC C8
+82 C4 82 C4 8E C5 BA C5 D0 DD 5A C4 5A C4 22 C4
+C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00 D0 C5 D2 DD
+22 C4 84 DD 03 2E 52 53 8F 4E FE FF 8F 41 FA FF
+3E 40 E0 20 D2 3F 42 D0 01 3F 2E 4E 30 40 26 C7
+4E D4 03 50 41 44 85 12 E4 20 A8 D4 05 57 4F 52
+44 53 0D 12 87 12 52 C9 2C C4 03 00 02 C9 2C C4
+CA 21 EA C4 06 DE 2C C4 10 00 3C C4 18 C5 F2 D2
+2C C4 00 00 3C C4 2C C4 10 00 3C C4 18 C5 2C C4
+00 00 C0 C5 3C C4 F8 C5 06 DE 18 C5 EA C4 A4 C5
+B0 C5 62 DE 5A C4 5A C4 F8 C5 3C C4 06 DE 18 C5
+EA C4 2C C4 02 00 D0 C5 44 DE 4C C4 B0 C5 A4 DE
+3C C4 2C C4 02 00 20 C5 EA C4 92 C4 06 DE 18 C5
+F2 C4 3C C4 54 CC 2C C4 7F 00 7E DD 24 C9 00 C5
+2C C4 0F 00 7E DD 2C C4 10 00 70 C4 20 C5 02 C9
+AC C5 30 DE 5A C4 22 C4 EC D2 03 4D 41 58 2E 9F
+07 38 2F 53 30 4D AA DE 03 4D 49 4E 2E 9F F9 3B
+3E 4F 30 4D 00 D2 03 55 2E 52 0D 12 87 12 A8 C4
+42 C6 2C C4 00 00 A2 C6 D4 C6 F0 C6 B4 C4 82 C4
+20 C5 2C C4 00 00 AE DE 02 C9 24 C9 22 C4 D0 D3
+04 44 55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00
+DC 21 2E 5F 87 12 70 C4 82 C4 82 C4 26 C7 2C C4
+01 00 20 C5 26 C7 2C C4 FE FF 7E DD C0 C5 52 C9
+F8 C5 2C C4 07 00 CA DE EC C8 F8 C5 2C C4 10 00
+18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 03 00 CA DE
+E2 C5 36 DF EC C8 EC C8 F8 C5 2C C4 10 00 18 C5
+F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00 BC DE 20 C6
+AE DE B0 C8 E2 C5 54 DF 2C C4 10 00 D0 C5 1E DF
+B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-26 D5
+14 D5
 q
index ac54d66..ebe3d97 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 60 C8 80 3E 50 C3 05 00 18 00 AC DF 54 D6
-2C C8 38 C8 00 00 00 00
+10 00 03 00 00 21 80 3E 05 00 18 00 78 DF 48 D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,398 +55,395 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 34 C9 FC C8 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 34 C9 FC C8 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 38 C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 98 C8 3B 40 68 C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 4C C8 4D 15 B2 40 11 00
-0E 05 D2 C3 02 02 30 41 B2 40 13 00 0E 05 D2 D3
-02 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A C8
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 0C 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 0E 05 30 4D 8E C8 2D 83
-92 B3 1C 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 21 02 24 92 53 E4 21 3E 8F 3D 41 30 4D A8 C7
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C C7
-04 45 4D 49 54 00 30 40 B8 C8 C0 C8 04 45 43 48
-4F 00 B2 40 82 48 86 C8 82 43 E4 21 30 4D 5C C7
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 C8 92 43
-E4 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 C8 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E C9 EF 3F 20 C9
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+D2 C3 02 02 30 41 B2 40 13 00 0E 05 D2 D3 02 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A C9 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C C9 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 C8 04 28
-43 52 29 00 0D 12 87 12 7C C9 02 0D 0A 00 34 C9
-22 C4 92 C7 02 43 52 00 30 40 64 C9 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 C9 07 43 41 50 53 5F 4F 4E B2 43 B4 21 30 4D
-92 C9 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 21
-30 4D 0A C9 82 53 22 00 0D 12 87 12 2C C4 7C C9
-24 CC AC C9 2C C4 22 00 00 CA 9A C9 CE C9 3D 41
-6E 4E 1E 83 82 5E CC 21 3E 4F 92 B3 CC 21 A2 63
-CC 21 30 4D E0 C8 82 2E 22 00 0D 12 87 12 B8 C9
-2C C4 34 C9 24 CC 22 C4 00 00 04 57 4F 52 44 00
-3C 40 C6 21 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 21 F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 21 82 4A CA 21 1E 42 CC 21 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 21 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 C4 34 40 0C C4 30 4D 8C C5 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 21 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 21 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 CB 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A CB 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 C6
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 21 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC C8 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E C5 01 2C 1A 42 CC 21 A2 53 CC 21 8A 4E 00 00
-3E 4F 30 4D 22 CC 87 4C 49 54 45 52 41 4C 82 93
-BE 21 0F 24 1A 42 CC 21 A2 52 CC 21 BA 40 2C C4
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 C9 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 21 82 4E
-C6 21 B2 4F C8 21 3E 4F 30 4D 0D 12 87 12 7A CC
-20 C6 00 CA 96 CC 3D 40 9E CC E1 22 44 3E A0 CC
-0A 4E 3E 4F 3D 40 B6 CC 37 27 3D 40 90 CC 1A E2
-BE 21 B8 27 B2 23 B8 CC 3E 4F 3D 40 90 CC BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 CF CC 3F 12 CC 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 21 3C 49 3B 49 3A 49 3D 15 87 12 8A CC
-F2 CC B2 41 CA 21 B2 41 C8 21 B2 41 C6 21 3D 41
-30 4D 94 C5 04 51 55 49 54 00 31 40 E0 20 B2 40
-00 20 00 20 82 43 BE 21 82 43 08 18 87 12 7C C9
-05 0D 0A 6F 6B 20 34 C9 D6 C7 FC C8 8A CC D6 C4
-68 C5 7C C9 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC CD 2C C4 30 FF 74 C7 A4 C5 7C C9 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC CD 38 C6 EA C4
-B0 C5 1E CD 7C C9 05 0D 0A 20 20 20 AC C5 26 CD
-F0 C7 05 41 42 4F 52 54 3F 40 80 20 C6 3F B2 40
-AC D4 0A D5 B2 40 5A C8 4E C8 B2 40 B8 C8 C8 C8
-B2 40 64 C9 7A C9 B2 40 AE C7 D4 C7 82 43 DA DC
-82 43 E6 DC 82 43 F2 DC 82 43 22 DD 82 43 2E DD
-82 43 3A DD B2 40 0A 00 E2 21 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 C8 B0 12
-8A CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 D2 C3
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 D2 C3
 02 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
-7C C9 04 1B 5B 37 6D 00 34 C9 2C C4 E4 21 EA C4
-4C C4 B0 C5 26 CE 7C C9 05 6C 69 6E 65 3A 34 C9
-38 C5 26 C7 D2 C8 34 C9 7C C9 04 1B 5B 30 6D 00
-34 C9 22 D4 9A C9 78 CD 72 CD 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 C9 2C C4 BC CD 24 CC 22 C4
-58 CA 01 27 0D 12 87 12 20 C6 00 CA 5E CA B0 C5
-64 CE 22 C4 C0 CC 3E C6 81 5C 92 42 C6 21 CA 21
-30 4D 00 00 81 5B 82 43 BE 21 30 4D 68 CE 01 5D
-B2 43 BE 21 30 4D 74 CE 83 5B 27 5D 0D 12 87 12
-54 CE 2C C4 2C C4 24 CC 24 CC 22 C4 BE 4F 02 00
-3E 4F 30 4D 5E C9 82 49 53 00 0D 12 87 12 38 C6
-EA C4 B0 C5 C0 CE 8C CE 2C C4 9C CE 24 CC 22 C4
-54 CE 9C CE 22 C4 A6 CE 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D B4 C9
-87 52 45 43 55 52 53 45 19 42 CC 21 99 42 BA 21
-00 00 A2 53 CC 21 30 4D 04 CD 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 C6 00 CA 5E CA 4C C4
-B0 C5 64 CE 68 C5 B0 C5 26 CF 2C C4 2C C4 24 CC
-24 CC 2C C4 24 CC 24 CC 22 C4 82 9F BC 21 2C 25
-0D 12 87 12 7C C9 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 CD 88 CE 81 3B 82 93 BE 21
-8C 27 0D 12 87 12 2C C4 22 C4 24 CC 2A CF 76 CE
-22 C4 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 21 82 4F BC 21 30 4D 4A CF 01 3A 30 12 62 CF
-0D 12 87 12 DA C9 20 C6 00 CA 8C CF 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 21 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 21 82 49 B8 21 82 4A
-BA 21 2A 52 82 4A CC 21 30 41 FA C9 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 CF BA 40 86 12 FC FF
-DF 3C 66 CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 CF BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 CF 06 43 52 45 41 54 45 00 B0 12 80 CF BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 CC 05 44 4F 45
-53 3E 1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C D0 05 44 45 46 45 52 B0 12 80 CF
-BA 40 30 40 FC FF BA 40 22 D0 FE FF A9 3C F2 CF
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A CF 86 5B 54 48 45 4E 5D 00 30 4D 72 D0 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6
-00 CA 6C CC 3C C4 B0 C5 F2 D0 82 C4 82 C4 7C C9
-04 5B 49 46 5D 00 48 D0 BA C5 B4 D0 56 C9 2E C5
-AC C5 EA D0 82 C4 82 C4 7C C9 06 5B 45 4C 53 45
-5D 00 48 D0 BA C5 D8 D0 56 C9 38 C5 3C C4 B0 C5
-EA D0 2E C5 AC C5 EA D0 7C C9 06 5B 54 48 45 4E
-5D 00 48 D0 BA C5 EA D0 38 C5 4C C4 BA C5 8E D0
-22 C4 56 C9 7C C9 05 0D 0A 6B 6F 20 34 C9 D6 C7
-7A CC AC C5 8E D0 7E D0 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 D1 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 C6 00 CA 5E CA 64 C4
-5C C5 22 C4 18 D1 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 00 CA 5E CA 64 C4 22 C4 50 D1
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 CC
-06 4D 41 52 4B 45 52 00 B0 12 80 CF BA 40 84 12
-FC FF BA 40 4E D1 FE FF 9A 42 CE 21 00 00 28 83
-8A 48 02 00 A2 52 CC 21 18 42 B6 21 19 42 B8 21
-A8 49 FE FF 89 48 00 00 30 4D C8 CE 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 21 A2 52 CC 21 BE 40
-B0 C5 00 00 2E 53 30 4D 26 D0 84 45 4C 53 45 00
-A2 52 CC 21 1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E C9 84 54 48 45 4E 00
-9E 42 CC 21 00 00 3E 4F 30 4D 40 D0 85 42 45 47
-49 4E 30 40 74 C7 DA D1 85 55 4E 54 49 4C 39 40
-B0 C5 A2 52 CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A CE 85 41 47 41 49 4E 39 40
-AC C5 EF 3F BC CF 85 57 48 49 4C 45 0D 12 87 12
-A0 D1 70 C4 22 C4 E0 CE 86 52 45 50 45 41 54 00
-0D 12 87 12 1E D2 E0 D1 22 C4 BA D1 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 21 1E 42 CC 21 BE 40
-C0 C5 FE FF A2 53 00 20 1A 42 00 20 8A 43 00 00
-30 4D 60 D1 84 4C 4F 4F 50 00 39 40 E2 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 1E 42
-00 20 A2 83 00 20 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE C7 85 2B 4C 4F 4F 50 39 40
-D0 C5 E5 3F 74 D2 85 4C 45 41 56 45 1A 42 CC 21
-BA 40 F2 C5 00 00 BA 40 AC C5 02 00 B2 50 06 00
-CC 21 A2 53 00 20 2A 52 19 42 00 20 89 4A 00 00
-30 4D B6 D2 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 D2 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA CF 2C C4
-10 00 2C C4 00 00 C0 C5 2C C4 00 00 24 CC E2 C5
-38 D3 74 C7 2C C4 CE 21 3C C4 EA C4 24 CC F2 C4
-12 D0 2C C4 D0 21 F2 C4 22 C4 52 CE 05 46 4F 52
-54 48 84 12 52 D3 AE DD 72 D6 24 DF 5C D3 58 D6
-A8 D2 EC DE 18 DE 36 DE 60 D4 FA DE 40 DE 00 00
-A2 DD 7E CE 2C DE 00 00 18 D2 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 21 38 40 D2 21 B5 3F FA CE
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 21 38 40 D0 21 A2 3F E6 C9 04 4F 4E 4C 59 00
-82 43 D2 21 30 4D 4C D2 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 21 E0 21 30 4D 62 D3 C0 D3
-D4 D3 E4 D3 3A 4E 82 4A CE 21 2E 4E 82 4E CC 21
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 D3 09 50 57 52 5F 53 54 41
-54 45 84 12 DC D3 54 D6 AC DF 38 D2 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 D4 92 42 0C 18
-28 D4 EF 3F 18 D4 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 21 26 D4 92 42 CC 21 28 D4 30 4D 2C D4
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 21 0E 18
-92 42 CC 21 0C 18 EC 3F 1C D3 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 DA FF FA 23
-B0 12 7E CD B2 40 AC DF 0C 18 B2 40 54 D6 0E 18
-CA 3F 9C D1 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C C9 06 0D 1B 5B 37 6D 23 00 34 C9
-5E C7 7C C9 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 C9 2C C4 30 FF 74 C7 20 C5 26 C7
-7C C9 0B 62 79 74 65 73 20 66 72 65 65 20 CE CD
-7A D4 04 57 41 52 4D 00 30 40 AC D4 EC D1 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A CC 01
-B2 43 06 02 B2 D0 03 00 04 02 B2 40 FC FF 02 02
-92 D3 02 02 F2 43 22 02 F2 D3 26 02 F2 40 A5 00
-A1 01 F2 40 10 00 A0 01 D2 43 A1 01 B2 40 00 A5
-60 01 B2 40 FF 1E 80 01 B2 40 BA 00 82 01 B2 40
-E8 01 84 01 39 40 00 01 82 43 88 01 92 D2 5E 01
-08 18 A2 93 08 18 01 24 49 07 38 40 59 14 18 83
-FE 23 19 83 FA 23 3A 40 1A D5 39 40 DA FF 89 4A
-00 00 29 53 FC 23 92 42 02 18 E4 FF B2 40 18 00
-0A 18 39 40 00 20 89 43 00 00 29 53 39 90 FF 2F
-FA 2B 31 40 E0 20 3F 40 80 20 37 40 22 C4 36 40
-B4 C4 35 40 00 C4 34 40 0C C4 B2 40 0A 00 E2 21
-B2 43 B4 21 92 C3 30 01 18 42 08 18 F2 B0 10 00
-00 02 04 20 38 E3 18 53 82 48 08 18 B2 40 81 00
-00 05 B2 40 03 00 06 05 B2 40 00 21 08 05 F2 D0
-30 00 0A 02 92 C3 00 05 92 D3 1A 05 3D 40 22 D6
-38 90 0A 00 35 27 38 90 16 00 32 2F 28 93 0B 23
-00 27 08 D5 8A D3 09 41 53 53 45 4D 42 4C 45 52
-84 12 52 D3 7C DC EA DC 30 DC 54 DD F6 DB 7C DD
-FA D8 00 00 EC DB A0 DC 4E DC 8E DC 0A DA 00 00
-00 00 8C DD 86 D3 A4 D4 85 48 49 32 4C 4F 0D 12
-87 12 74 C7 B4 D1 24 CC 76 CE 90 D3 30 D6 22 C4
-0E D5 04 43 4F 44 45 00 B0 12 80 CF A2 82 CC 21
-0D 12 87 12 72 CF AC C5 6A D6 00 00 07 45 4E 44
-43 4F 44 45 0D 12 87 12 AA D3 2A CF 22 C4 26 D6
-03 41 53 4D 92 42 E0 21 C0 21 B2 40 34 D6 E0 21
-E3 3F 8C D6 06 45 4E 44 41 53 4D 00 92 42 C0 21
-E0 21 E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 21
-BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 21
-B2 43 BE 21 30 40 AA D3 00 00 05 4C 4F 32 48 49
-A2 83 CC 21 1A 42 CC 21 EE 3F 38 40 C6 21 39 48
-2A 48 09 5A 1A 52 CA 21 09 9A 03 24 7E 9A FC 27
-1A 83 0E 4A 2A 88 82 4A CA 21 30 4D 87 12 00 CA
-5E CA BA C5 2E D7 18 CB B0 C5 64 CE 50 D7 30 D7
-29 4E 39 90 86 12 02 20 2E 53 30 41 39 90 85 12
-03 20 1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52
-30 41 19 42 CC 21 A2 53 CC 21 89 4E 00 00 3E 40
-29 00 12 12 CA 21 92 53 CA 21 87 12 00 CA 18 CB
-B0 C5 80 D7 76 D7 21 53 3E 90 10 00 BE 2D 30 41
-82 D7 B2 41 CA 21 22 D3 30 41 0D 12 87 12 20 C6
-FA D6 94 D7 82 43 C4 21 92 42 CC 21 C2 21 A2 53
-CC 21 0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53
-CA 21 B0 12 1C D7 0E 93 04 20 B2 40 00 03 C4 21
-27 3C 1E 93 04 20 B2 40 10 03 C4 21 21 3C 2E 93
-04 20 B2 40 20 03 C4 21 1B 3C 2E 92 04 20 B2 40
-20 02 C4 21 15 3C 3E 92 04 20 B2 40 30 02 C4 21
-0F 3C 3E 93 04 20 B2 40 30 03 C4 21 09 3C B2 40
-30 00 C4 21 19 42 CC 21 A2 53 CC 21 89 4E 00 00
-3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40
-10 02 C4 21 92 53 CA 21 B0 12 1C D7 EB 3F FA 90
-40 00 00 00 1A 20 B2 40 20 00 C4 21 92 53 CA 21
-B0 12 62 D7 0E 20 B2 50 10 00 C4 21 3E 40 2B 00
-B0 12 62 D7 33 24 92 92 C6 21 CA 21 02 24 92 53
-CA 21 8E 10 82 5E C4 21 D3 3F B0 12 62 D7 F9 23
-B2 50 10 00 C4 21 3E 40 28 00 B0 12 1C D7 B0 12
-52 D7 E8 3F 0D 12 87 12 20 C6 FA D6 8E D8 FE 90
-26 00 00 00 3E 40 20 00 04 20 B2 50 82 00 C4 21
-C1 3F B0 12 62 D7 DE 23 B2 50 80 00 C4 21 3E 40
-28 00 B0 12 1C D7 B0 12 52 D7 D4 23 3D 40 64 CE
-30 4D 46 C8 04 52 45 54 49 00 0D 12 87 12 2C C4
-00 13 24 CC 22 C4 2C C4 2C 00 8A D7 84 D8 E0 D8
-2E 4E 1E D2 C4 21 19 42 C2 21 90 3F EA D6 03 4D
-4F 56 84 12 D6 D8 00 40 EE D8 05 4D 4F 56 2E 42
-84 12 D6 D8 40 40 00 00 03 41 44 44 84 12 D6 D8
-00 50 08 D9 05 41 44 44 2E 42 84 12 D6 D8 40 50
-14 D9 04 41 44 44 43 00 84 12 D6 D8 00 60 22 D9
-06 41 44 44 43 2E 42 00 84 12 D6 D8 40 60 C4 D8
-04 53 55 42 43 00 84 12 D6 D8 00 70 40 D9 06 53
-55 42 43 2E 42 00 84 12 D6 D8 40 70 4E D9 03 53
-55 42 84 12 D6 D8 00 80 5E D9 05 53 55 42 2E 42
-84 12 D6 D8 40 80 C6 D6 03 43 4D 50 84 12 D6 D8
-00 90 78 D9 05 43 4D 50 2E 42 84 12 D6 D8 40 90
-B4 D6 04 44 41 44 44 00 84 12 D6 D8 00 A0 92 D9
-06 44 41 44 44 2E 42 00 84 12 D6 D8 40 A0 84 D9
-03 42 49 54 84 12 D6 D8 00 B0 B0 D9 05 42 49 54
-2E 42 84 12 D6 D8 40 B0 BC D9 03 42 49 43 84 12
-D6 D8 00 C0 CA D9 05 42 49 43 2E 42 84 12 D6 D8
-40 C0 D6 D9 03 42 49 53 84 12 D6 D8 00 D0 E4 D9
-05 42 49 53 2E 42 84 12 D6 D8 40 D0 00 00 03 58
-4F 52 84 12 D6 D8 00 E0 FE D9 05 58 4F 52 2E 42
-84 12 D6 D8 40 E0 30 D9 03 41 4E 44 84 12 D6 D8
-00 F0 18 DA 05 41 4E 44 2E 42 84 12 D6 D8 40 F0
-20 C6 8A D7 36 DA 1A 42 C4 21 B2 F0 70 00 C4 21
-8A 10 3A F0 0F 00 82 DA C4 21 4A 3F 6A D9 03 52
-52 43 84 12 30 DA 00 10 4E DA 05 52 52 43 2E 42
-84 12 30 DA 40 10 5A DA 04 53 57 50 42 00 84 12
-30 DA 80 10 68 DA 03 52 52 41 84 12 30 DA 00 11
-76 DA 05 52 52 41 2E 42 84 12 30 DA 40 11 82 DA
-03 53 58 54 84 12 30 DA 80 11 00 00 04 50 55 53
-48 00 84 12 30 DA 00 12 9C DA 06 50 55 53 48 2E
-42 00 84 12 30 DA 40 12 F0 D9 04 43 41 4C 4C 00
-84 12 30 DA 80 12 2C C4 2C 00 8A D7 84 D8 D0 DA
-59 42 C4 21 5A 42 C5 21 82 4A C4 21 BE 90 00 15
-00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00
-03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E C7
-7C C9 0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73
-C8 CD AA DA 05 50 55 53 48 4D 84 12 C6 DA 00 15
-14 DB 04 50 4F 50 4D 00 84 12 C6 DA 00 17 20 C6
-FA D6 34 DB 82 43 C4 21 92 42 CC 21 C2 21 A2 53
-CC 21 92 53 CA 21 3E 40 2C 00 87 12 00 CA 18 CB
-B0 C5 64 CE 84 D8 58 DB 0A 4E 3E 4F 1A 83 2A 92
-CA 2F 8A 10 5A 06 6F 3F 90 DA 04 52 52 43 4D 00
-84 12 2E DB 50 00 6A DB 04 52 52 41 4D 00 84 12
-2E DB 50 01 78 DB 04 52 4C 41 4D 00 84 12 2E DB
-50 02 86 DB 04 52 52 55 4D 00 84 12 2E DB 50 03
-85 12 00 3C 94 DB 03 53 3E 3D 85 12 00 38 A6 DB
-02 53 3C 00 85 12 00 34 22 DB 03 30 3E 3D 85 12
-00 30 BA DB 02 30 3C 00 85 12 00 30 00 00 02 55
-3C 00 85 12 00 2C CE DB 03 55 3E 3D 85 12 00 28
-C4 DB 03 30 3C 3E 85 12 00 24 E2 DB 02 30 3D 00
-85 12 00 20 52 C8 02 49 46 00 1A 42 CC 21 8A 4E
-00 00 A2 53 CC 21 0E 4A 30 4D D8 DB 04 54 48 45
-4E 00 1A 42 CC 21 08 4E 3E 4F 09 48 29 53 0A 89
-0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D A0 D9
-04 45 4C 53 45 00 1A 42 CC 21 BA 40 00 3C 00 00
-A2 53 CC 21 2F 83 8F 4A 00 00 E3 3F 0C DC 05 55
-4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 21 2A 83
-0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA
-89 48 00 00 A2 53 CC 21 30 4D 24 DA 05 41 47 41
-49 4E 0D 12 87 12 A0 DB 54 DC 22 C4 00 00 05 57
-48 49 4C 45 0D 12 87 12 FA DB 70 C4 22 C4 B0 DB
-06 52 45 50 45 41 54 00 0D 12 87 12 A0 DB 54 DC
-12 DC 22 C4 B6 DC 3D 41 08 4E 3E 4F 2A 48 0A 93
-04 20 98 42 CC 21 00 00 30 4D 88 43 00 00 C3 3F
-BA DA 03 42 57 31 84 12 B4 DC 00 00 D2 DC 03 42
-57 32 84 12 B4 DC 00 00 DE DC 03 42 57 33 84 12
-B4 DC 00 00 F6 DC 3D 41 1A 42 CC 21 28 4E 08 93
-08 20 BA 4F 00 00 A2 53 CC 21 8E 4A 00 00 3E 4F
-30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31 84 12
-F4 DC 00 00 1A DD 03 46 57 32 84 12 F4 DC 00 00
-26 DD 03 46 57 33 84 12 F4 DC 00 00 3E 90 00 30
-07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08
-30 4D 32 DD 04 47 4F 54 4F 00 0D 12 87 12 A0 DB
-54 CE 1A CC 22 C4 00 00 05 3F 47 4F 54 4F 0D 12
-87 12 3C DD 54 CE 1A CC 22 C4 00 00 03 4A 4D 50
-0D 12 87 12 54 CE 82 DC 22 C4 68 DD 04 3F 4A 4D
-50 00 0D 12 87 12 3C DD 54 CE 70 C4 54 DC 22 C4
-36 D1 07 7B 54 4F 4F 4C 53 7D 30 4D A0 D6 03 41
-4E 44 3E FF 30 4D BA D3 02 2E 53 00 8F 4E FE FF
-0E 4F 2E 83 8F 4E FA FF 3E 40 80 20 2E 83 8F 4E
-FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12 2C C4
-3C 00 C6 C8 5E C7 2C C4 08 00 C6 C8 2C C4 3E 00
-C6 C8 FC C8 82 C4 82 C4 8E C5 BA C5 04 DE 5A C4
-5A C4 22 C4 C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00
-D0 C5 06 DE 22 C4 B8 DD 03 2E 52 53 8F 4E FE FF
-8F 41 FA FF 3E 40 E0 20 D2 3F BE CA 01 3F 2E 4E
-30 40 26 C7 46 D4 03 50 41 44 85 12 E4 20 02 D5
-05 57 4F 52 44 53 0D 12 87 12 78 C9 2C C4 03 00
-12 C9 2C C4 D0 21 EA C4 3A DE 2C C4 10 00 3C C4
-18 C5 EA D2 2C C4 00 00 3C C4 2C C4 10 00 3C C4
-18 C5 2C C4 00 00 C0 C5 3C C4 F8 C5 3A DE 18 C5
-EA C4 A4 C5 B0 C5 96 DE 5A C4 5A C4 F8 C5 3C C4
-3A DE 18 C5 EA C4 2C C4 02 00 D0 C5 78 DE 4C C4
-B0 C5 D8 DE 3C C4 2C C4 02 00 20 C5 EA C4 92 C4
-3A DE 18 C5 F2 C4 3C C4 6C CC 2C C4 7F 00 B2 DD
-34 C9 00 C5 2C C4 0F 00 B2 DD 2C C4 10 00 70 C4
-20 C5 12 C9 AC C5 64 DE 5A C4 22 C4 E4 D2 03 4D
-41 58 2E 9F 07 38 2F 53 30 4D DE DE 03 4D 49 4E
-2E 9F F9 3B 3E 4F 30 4D F8 D1 03 55 2E 52 0D 12
-87 12 A8 C4 42 C6 2C C4 00 00 A2 C6 D4 C6 F0 C6
-B4 C4 82 C4 20 C5 2C C4 00 00 E2 DE 12 C9 34 C9
-22 C4 C8 D3 04 44 55 4D 50 00 0D 12 12 12 E2 21
-B2 40 10 00 E2 21 2E 5F 87 12 70 C4 82 C4 82 C4
-26 C7 2C C4 01 00 20 C5 26 C7 2C C4 FE FF B2 DD
-C0 C5 78 C9 F8 C5 2C C4 07 00 FE DE FC C8 F8 C5
-2C C4 10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4
-03 00 FE DE E2 C5 6A DF FC C8 FC C8 F8 C5 2C C4
-10 00 18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00
-F0 DE 20 C6 E2 DE C6 C8 E2 C5 88 DF 2C C4 10 00
-D0 C5 52 DF B4 C4 2C C6 F2 C4 22 C4
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 7A DD
+F0 D6 F0 DE 64 D3 4C D6 B0 D2 B8 DE E4 DD 02 DE
+68 D4 C6 DE 0C DE 00 00 6E DD 5E CE F8 DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 48 D6
+78 DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 78 DF 0C 18 B2 40
+48 D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 B2 D0
+03 00 04 02 B2 40 FC FF 02 02 92 D3 02 02 F2 43
+22 02 F2 D3 26 02 F2 40 A5 00 A1 01 F2 40 10 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BA 00 82 01 B2 40 E8 01 84 01 39 40
+00 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 26 00 29 83 B9 40 14 D5 DA FF FB 23 B2 40
+54 C8 E4 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 C4 36 40 B4 C4 35 40 00 C4 34 40 0C C4 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B0 10 00 00 02 04 20 38 E3 18 53 82 48 08 18
+B2 40 81 00 00 05 92 42 02 18 06 05 92 42 04 18
+08 05 F2 D0 30 00 0A 02 92 C3 00 05 92 D3 1A 05
+3D 40 16 D6 38 90 0A 00 3F 27 38 90 16 00 3C 2F
+28 93 15 23 0A 27 AE D4 92 D3 09 41 53 53 45 4D
+42 4C 45 52 84 12 5A D3 48 DC B6 DC FC DB 20 DD
+C2 DB 48 DD DC D8 00 00 B8 DB 6C DC 1A DC 5A DC
+EC D9 00 00 00 00 58 DD 8E D3 A4 D1 85 48 49 32
+4C 4F 0D 12 87 12 74 C7 BC D1 0C CC 56 CE 98 D3
+24 D6 22 C4 08 D5 04 43 4F 44 45 00 B0 12 82 CF
+A2 82 C6 21 0D 12 87 12 74 CF AC C5 5E D6 00 00
+07 45 4E 44 43 4F 44 45 0D 12 87 12 B2 D3 0A CF
+22 C4 1A D6 03 41 53 4D 92 42 DA 21 E0 21 B2 40
+28 D6 DA 21 E3 3F 80 D6 06 45 4E 44 41 53 4D 00
+92 42 E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E
+1A 42 C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00
+A2 52 C6 21 B2 43 BE 21 30 40 B2 D3 00 00 05 4C
+4F 32 48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 66 D6
+07 43 4F 44 45 4E 4E 4D 0D 12 87 12 4C CF 56 CE
+02 D7 3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21
+39 48 2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A
+FC 27 1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15
+87 12 E8 C9 46 CA BA C5 42 D7 00 CB B0 C5 44 CE
+64 D7 44 D7 29 4E 39 90 86 12 02 20 2E 53 0A 3C
+39 90 85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12
+01 20 2E 52 1B 17 30 41 3E 40 28 00 B0 12 2E D7
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00
+1C 15 12 12 C4 21 92 53 C4 21 87 12 E8 C9 00 CB
+B0 C5 A0 D7 96 D7 21 53 3E 90 10 00 84 2D E2 2B
+A2 D7 B2 41 C4 21 DE 3F 0D 12 87 12 20 C6 0C D7
+B2 D7 0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F
+FA 90 23 00 00 00 2D 20 92 53 C4 21 B0 12 2E D7
+0E 93 03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40
+10 03 1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92
+03 20 3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02
+0D 3C 3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41
+30 4D FA 90 26 00 00 00 07 20 3C 40 10 02 92 53
+C4 21 B0 12 2E D7 EC 3F FA 90 40 00 00 00 16 20
+3C 40 20 00 92 53 C4 21 B0 12 80 D7 0C 20 3C 50
+10 00 3E 40 2B 00 B0 12 80 D7 92 92 C0 21 C4 21
+02 24 92 53 C4 21 8E 10 0C 5E D8 3F B0 12 80 D7
+FA 23 3C 50 10 00 B0 12 68 D7 EF 3F 0D 12 87 12
+20 C6 0C D7 86 D8 FE 90 26 00 00 00 3E 40 20 00
+03 20 3C 50 82 00 CB 3F B0 12 80 D7 E5 23 3C 50
+80 00 B0 12 68 D7 E0 3F 44 C8 04 52 45 54 49 00
+0D 12 87 12 2C C4 00 13 0C CC 22 C4 2C C4 2C 00
+A8 D7 7C D8 C6 D8 2E 4E 0E DC 09 4B A5 3F DE D6
+03 4D 4F 56 84 12 BC D8 00 40 D0 D8 05 4D 4F 56
+2E 42 84 12 BC D8 40 40 00 00 03 41 44 44 84 12
+BC D8 00 50 EA D8 05 41 44 44 2E 42 84 12 BC D8
+40 50 F6 D8 04 41 44 44 43 00 84 12 BC D8 00 60
+04 D9 06 41 44 44 43 2E 42 00 84 12 BC D8 40 60
+AA D8 04 53 55 42 43 00 84 12 BC D8 00 70 22 D9
+06 53 55 42 43 2E 42 00 84 12 BC D8 40 70 30 D9
+03 53 55 42 84 12 BC D8 00 80 40 D9 05 53 55 42
+2E 42 84 12 BC D8 40 80 BA D6 03 43 4D 50 84 12
+BC D8 00 90 5A D9 05 43 4D 50 2E 42 84 12 BC D8
+40 90 A8 D6 04 44 41 44 44 00 84 12 BC D8 00 A0
+74 D9 06 44 41 44 44 2E 42 00 84 12 BC D8 40 A0
+66 D9 03 42 49 54 84 12 BC D8 00 B0 92 D9 05 42
+49 54 2E 42 84 12 BC D8 40 B0 9E D9 03 42 49 43
+84 12 BC D8 00 C0 AC D9 05 42 49 43 2E 42 84 12
+BC D8 40 C0 B8 D9 03 42 49 53 84 12 BC D8 00 D0
+C6 D9 05 42 49 53 2E 42 84 12 BC D8 40 D0 00 00
+03 58 4F 52 84 12 BC D8 00 E0 E0 D9 05 58 4F 52
+2E 42 84 12 BC D8 40 E0 12 D9 03 41 4E 44 84 12
+BC D8 00 F0 FA D9 05 41 4E 44 2E 42 84 12 BC D8
+40 F0 20 C6 A8 D7 18 DA 0A 4C 3C F0 70 00 8A 10
+3A F0 0F 00 0C DA 4F 3F 4C D9 03 52 52 43 84 12
+12 DA 00 10 2A DA 05 52 52 43 2E 42 84 12 12 DA
+40 10 36 DA 04 53 57 50 42 00 84 12 12 DA 80 10
+44 DA 03 52 52 41 84 12 12 DA 00 11 52 DA 05 52
+52 41 2E 42 84 12 12 DA 40 11 5E DA 03 53 58 54
+84 12 12 DA 80 11 00 00 04 50 55 53 48 00 84 12
+12 DA 00 12 78 DA 06 50 55 53 48 2E 42 00 84 12
+12 DA 40 12 D2 D9 04 43 41 4C 4C 00 84 12 12 DA
+80 12 1A 53 0E 4A 0D 12 87 12 5E C7 64 C9 0D 6F
+75 74 20 6F 66 20 62 6F 75 6E 64 73 A8 CD 20 C6
+0C D7 C4 DA 0C 43 1B 42 C6 21 A2 53 C6 21 92 53
+C4 21 3E 40 2C 00 1C 15 87 12 E8 C9 00 CB B0 C5
+44 CE E4 DA 1B 17 87 12 7C D8 EC DA 0A 4E 3E 4F
+1A 83 D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28
+0C 8A 08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92
+C8 2F 8A 10 5A 06 86 3F 6C DA 04 52 52 43 4D 00
+84 12 BE DA 50 00 1A DB 04 52 52 41 4D 00 84 12
+BE DA 50 01 28 DB 04 52 4C 41 4D 00 84 12 BE DA
+50 02 36 DB 04 52 52 55 4D 00 84 12 BE DA 50 03
+86 DA 05 50 55 53 48 4D 84 12 BE DA 00 15 52 DB
+04 50 4F 50 4D 00 84 12 BE DA 00 17 85 12 00 3C
+44 DB 03 53 3E 3D 85 12 00 38 72 DB 02 53 3C 00
+85 12 00 34 60 DB 03 30 3E 3D 85 12 00 30 86 DB
+02 30 3C 00 85 12 00 30 00 00 02 55 3C 00 85 12
+00 2C 9A DB 03 55 3E 3D 85 12 00 28 90 DB 03 30
+3C 3E 85 12 00 24 AE DB 02 30 3D 00 85 12 00 20
+00 00 02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53
+C6 21 0E 4A 30 4D A4 DB 04 54 48 45 4E 00 1A 42
+C6 21 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90
+00 02 58 2F 88 DA 00 00 30 4D 82 D9 04 45 4C 53
+45 00 1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21
+2F 83 8F 4A 00 00 E3 3F D8 DB 05 55 4E 54 49 4C
+3A 4F 08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11
+3A 90 00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00
+A2 53 C6 21 30 4D 06 DA 05 41 47 41 49 4E 0D 12
+87 12 6C DB 20 DC 22 C4 00 00 05 57 48 49 4C 45
+0D 12 87 12 C6 DB 70 C4 22 C4 7C DB 06 52 45 50
+45 41 54 00 0D 12 87 12 6C DB 20 DC DE DB 22 C4
+82 DC 3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43
+00 00 C7 23 98 42 C6 21 00 00 30 4D 96 DA 03 42
+57 31 84 12 80 DC E2 21 9E DC 03 42 57 32 84 12
+80 DC E4 21 AA DC 03 42 57 33 84 12 80 DC E6 21
+C2 DC 3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00
+08 93 88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00
+3E 4F 30 4D 00 00 03 46 57 31 84 12 C0 DC E8 21
+E6 DC 03 46 57 32 84 12 C0 DC EA 21 F2 DC 03 46
+57 33 84 12 C0 DC EC 21 3E 90 00 30 07 24 3E E0
+00 04 3E B0 00 10 02 24 3E E0 00 08 30 4D FE DC
+04 47 4F 54 4F 00 0D 12 87 12 6C DB 34 CE 02 CC
+22 C4 00 00 05 3F 47 4F 54 4F 0D 12 87 12 08 DD
+34 CE 02 CC 22 C4 00 00 03 4A 4D 50 0D 12 87 12
+34 CE 4E DC 22 C4 34 DD 04 3F 4A 4D 50 00 0D 12
+87 12 08 DD 34 CE 70 C4 20 DC 22 C4 40 D1 07 7B
+54 4F 4F 4C 53 7D 30 4D 94 D6 03 41 4E 44 3E FF
+30 4D C2 D3 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83
+8F 4E FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80
+06 00 2E 8F 0E 11 0D 12 87 12 2C C4 3C 00 B0 C8
+5E C7 2C C4 08 00 B0 C8 2C C4 3E 00 B0 C8 EC C8
+82 C4 82 C4 8E C5 BA C5 D0 DD 5A C4 5A C4 22 C4
+C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00 D0 C5 D2 DD
+22 C4 84 DD 03 2E 52 53 8F 4E FE FF 8F 41 FA FF
+3E 40 E0 20 D2 3F 42 D0 01 3F 2E 4E 30 40 26 C7
+4E D4 03 50 41 44 85 12 E4 20 A8 D4 05 57 4F 52
+44 53 0D 12 87 12 52 C9 2C C4 03 00 02 C9 2C C4
+CA 21 EA C4 06 DE 2C C4 10 00 3C C4 18 C5 F2 D2
+2C C4 00 00 3C C4 2C C4 10 00 3C C4 18 C5 2C C4
+00 00 C0 C5 3C C4 F8 C5 06 DE 18 C5 EA C4 A4 C5
+B0 C5 62 DE 5A C4 5A C4 F8 C5 3C C4 06 DE 18 C5
+EA C4 2C C4 02 00 D0 C5 44 DE 4C C4 B0 C5 A4 DE
+3C C4 2C C4 02 00 20 C5 EA C4 92 C4 06 DE 18 C5
+F2 C4 3C C4 54 CC 2C C4 7F 00 7E DD 24 C9 00 C5
+2C C4 0F 00 7E DD 2C C4 10 00 70 C4 20 C5 02 C9
+AC C5 30 DE 5A C4 22 C4 EC D2 03 4D 41 58 2E 9F
+07 38 2F 53 30 4D AA DE 03 4D 49 4E 2E 9F F9 3B
+3E 4F 30 4D 00 D2 03 55 2E 52 0D 12 87 12 A8 C4
+42 C6 2C C4 00 00 A2 C6 D4 C6 F0 C6 B4 C4 82 C4
+20 C5 2C C4 00 00 AE DE 02 C9 24 C9 22 C4 D0 D3
+04 44 55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00
+DC 21 2E 5F 87 12 70 C4 82 C4 82 C4 26 C7 2C C4
+01 00 20 C5 26 C7 2C C4 FE FF 7E DD C0 C5 52 C9
+F8 C5 2C C4 07 00 CA DE EC C8 F8 C5 2C C4 10 00
+18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 03 00 CA DE
+E2 C5 36 DF EC C8 EC C8 F8 C5 2C C4 10 00 18 C5
+F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00 BC DE 20 C6
+AE DE B0 C8 E2 C5 54 DF 2C C4 10 00 D0 C5 1E DF
+B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-1A D5
+14 D5
 q
index 4d8f521..bb24022 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 C8 80 3E 00 24 05 00 18 00 B8 DF 60 D6
-2C C8 3E C8 00 00 00 00
+10 00 11 00 00 4A 80 3E 05 00 18 00 78 DF 48 D6
+24 C8 36 C8 00 00 00 00 00 00
+@2400
+00 00
 @C400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 C5 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C5 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C5 02 42 4C 00
-85 12 20 00 1C C6 04 42 41 53 45 00 85 12 E2 21
+85 12 20 00 1C C6 04 42 41 53 45 00 85 12 DC 21
 C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 23 00 B2 40 B2 21 B2 21 30 4D EA C5 06 55 4D 2F
 4D 4F 44 00 30 12 5A C4 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 C4 05 53 54 41 54 45 85 12 BE 21 7E C5 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C4 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C6
-01 23 1B 42 E2 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
+01 23 1B 42 DC 21 2C 4F 2F 83 B0 12 60 C6 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 21 18 42 B2 21 C8 4A 00 00 30 4D A0 C6
 02 23 53 00 0D 12 87 12 A2 C6 DC C6 2D 83 09 93
@@ -53,399 +55,395 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C6 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C6 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C6 02 55 2E 00 0D 12 87 12 42 C6 2C C4 00 00
-D4 C6 F0 C6 40 C9 08 C9 22 C4 3E C5 02 44 2E 00
+D4 C6 F0 C6 24 C9 EC C8 22 C4 3E C5 02 44 2E 00
 0D 12 87 12 42 C6 70 C4 82 C4 44 C5 D4 C6 92 C4
-14 C7 F0 C6 40 C9 08 C9 22 C4 7C C4 01 2E 0E 93
+14 C7 F0 C6 24 C9 EC C8 22 C4 7C C4 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C7 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 21 30 4D
-F0 C4 05 41 4C 4C 4F 54 82 5E CC 21 3E 4F 30 4D
-EC C6 02 43 2C 00 1A 42 CC 21 CA 4E 00 00 92 53
-CC 21 3E 4F 30 4D 6E C7 05 28 4B 45 59 29 18 42
-0C 05 2F 83 8F 4E 00 00 B0 12 2C C8 92 B3 1C 05
-FD 27 1E 42 0C 05 B0 12 3E C8 30 4D 08 C6 03 4B
-45 59 30 40 AE C7 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 21 00 00 AF 4F 02 00 05 3C 82 C7
-06 41 43 43 45 50 54 00 3C 40 A4 C8 3B 40 6E C8
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C8 92 B3 1C 05 05 24 18 42 0C 05 38 90
-0A 00 04 20 21 53 39 40 52 C8 4D 15 A2 B3 1C 05
-FD 27 B2 40 11 00 0E 05 D2 C3 02 02 30 41 B2 40
-13 00 0E 05 D2 D3 02 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C8 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 0C 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05
-FD 27 82 48 0E 05 30 4D 9A C8 2D 83 92 B3 1C 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 21 02 24
-92 53 E4 21 3E 8F 3D 41 30 4D A8 C7 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C7 04 45 4D 49
-54 00 30 40 C4 C8 CC C8 04 45 43 48 4F 00 B2 40
-82 48 92 C8 82 43 E4 21 30 4D 5C C7 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C8 92 43 E4 21 30 4D
-0E C7 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C9 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C9 EF 3F 2C C9 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C7 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C9 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C9 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C8 04 28 43 52 29 00
-0D 12 87 12 88 C9 02 0D 0A 00 40 C9 22 C4 92 C7
-02 43 52 00 30 40 70 C9 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C9 07 43
-41 50 53 5F 4F 4E B2 43 B4 21 30 4D 9E C9 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 21 30 4D 16 C9
-82 53 22 00 0D 12 87 12 2C C4 88 C9 30 CC B8 C9
-2C C4 22 00 0C CA A6 C9 DA C9 3D 41 6E 4E 1E 83
-82 5E CC 21 3E 4F 92 B3 CC 21 A2 63 CC 21 30 4D
-EC C8 82 2E 22 00 0D 12 87 12 C4 C9 2C C4 40 C9
-30 CC 22 C4 00 00 04 57 4F 52 44 00 3C 40 C6 21
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 21
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 21 82 4A CA 21 1E 42 CC 21 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 21 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C4 34 40 0C C4 30 4D 8C C5 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 21 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 21 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 CB 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 CB 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 21 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C8 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C
-1A 42 CC 21 A2 53 CC 21 8A 4E 00 00 3E 4F 30 4D
-2E CC 87 4C 49 54 45 52 41 4C 82 93 BE 21 0F 24
-1A 42 CC 21 A2 52 CC 21 BA 40 2C C4 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C9 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 21 82 4E C6 21 B2 4F
-C8 21 3E 4F 30 4D 0D 12 87 12 86 CC 20 C6 0C CA
-A2 CC 3D 40 AA CC E1 22 44 3E AC CC 0A 4E 3E 4F
-3D 40 C2 CC 37 27 3D 40 9C CC 1A E2 BE 21 B8 27
-B2 23 C4 CC 3E 4F 3D 40 9C CC BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CF CC 3F
-1E CC 08 45 56 41 4C 55 41 54 45 00 39 40 C6 21
-3C 49 3B 49 3A 49 3D 15 87 12 96 CC FE CC B2 41
-CA 21 B2 41 C8 21 B2 41 C6 21 3D 41 30 4D 94 C5
-04 51 55 49 54 00 31 40 E0 20 B2 40 00 20 00 20
-82 43 BE 21 82 43 08 18 87 12 88 C9 05 0D 0A 6F
-6B 20 40 C9 D6 C7 08 C9 96 CC D6 C4 68 C5 88 C9
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CD
-2C C4 30 FF 74 C7 A4 C5 88 C9 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CD 38 C6 EA C4 B0 C5 2A CD
-88 C9 05 0D 0A 20 20 20 AC C5 32 CD F0 C7 05 41
-42 4F 52 54 3F 40 80 20 C6 3F B2 40 B8 D4 16 D5
-B2 40 60 C8 54 C8 B2 40 C4 C8 D4 C8 B2 40 70 C9
-86 C9 B2 40 AE C7 D4 C7 82 43 E6 DC 82 43 F2 DC
-82 43 FE DC 82 43 2E DD 82 43 3A DD 82 43 46 DD
-B2 40 0A 00 E2 21 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C8 B0 12 96 CD A2 B3
-1C 05 FD 27 B2 40 11 00 0E 05 D2 C3 02 02 92 C3
-1C 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 1C 05 F3 23 0D 12 87 12 88 C9 04 1B
-5B 37 6D 00 40 C9 2C C4 E4 21 EA C4 4C C4 B0 C5
-32 CE 88 C9 05 6C 69 6E 65 3A 40 C9 38 C5 26 C7
-DE C8 40 C9 88 C9 04 1B 5B 30 6D 00 40 C9 2E D4
-A6 C9 84 CD 7E CD 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C9 2C C4 C8 CD 30 CC 22 C4 64 CA 01 27
-0D 12 87 12 20 C6 0C CA 6A CA B0 C5 70 CE 22 C4
-CC CC 3E C6 81 5C 92 42 C6 21 CA 21 30 4D 00 00
-81 5B 82 43 BE 21 30 4D 74 CE 01 5D B2 43 BE 21
-30 4D 80 CE 83 5B 27 5D 0D 12 87 12 60 CE 2C C4
-2C C4 30 CC 30 CC 22 C4 BE 4F 02 00 3E 4F 30 4D
-6A C9 82 49 53 00 0D 12 87 12 38 C6 EA C4 B0 C5
-CC CE 98 CE 2C C4 A8 CE 30 CC 22 C4 60 CE A8 CE
-22 C4 B2 CE 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 21 FA D0 80 00 00 00 30 4D C0 C9 87 52 45 43
-55 52 53 45 19 42 CC 21 99 42 BA 21 00 00 A2 53
-CC 21 30 4D 10 CD 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C6 0C CA 6A CA 4C C4 B0 C5 70 CE
-68 C5 B0 C5 32 CF 2C C4 2C C4 30 CC 30 CC 2C C4
-30 CC 30 CC 22 C4 82 9F BC 21 2C 25 0D 12 87 12
-88 C9 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CD 94 CE 81 3B 82 93 BE 21 8C 27 0D 12
-87 12 2C C4 22 C4 30 CC 36 CF 82 CE 22 C4 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 21 82 4F
-BC 21 30 4D 56 CF 01 3A 30 12 6E CF 0D 12 87 12
-E6 C9 20 C6 0C CA 98 CF 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 21 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 21 82 49 B8 21 82 4A BA 21 2A 52
-82 4A CC 21 30 41 06 CA 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CF BA 40 86 12 FC FF DF 3C 72 CC
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CF BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CF 06 43
-52 45 41 54 45 00 B0 12 8C CF BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CC 05 44 4F 45 53 3E 1A 42
-BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 D0 05 44 45 46 45 52 B0 12 8C CF BA 40 30 40
-FC FF BA 40 2E D0 FE FF A9 3C FE CF 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CF 86 5B
-54 48 45 4E 5D 00 30 4D 7E D0 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C4 01 00 20 C6 0C CA 78 CC
-3C C4 B0 C5 FE D0 82 C4 82 C4 88 C9 04 5B 49 46
-5D 00 54 D0 BA C5 C0 D0 62 C9 2E C5 AC C5 F6 D0
-82 C4 82 C4 88 C9 06 5B 45 4C 53 45 5D 00 54 D0
-BA C5 E4 D0 62 C9 38 C5 3C C4 B0 C5 F6 D0 2E C5
-AC C5 F6 D0 88 C9 06 5B 54 48 45 4E 5D 00 54 D0
-BA C5 F6 D0 38 C5 4C C4 BA C5 9A D0 22 C4 62 C9
-88 C9 05 0D 0A 6B 6F 20 40 C9 D6 C7 86 CC AC C5
-9A D0 8A D0 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 D1 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C6 0C CA 6A CA 64 C4 5C C5 22 C4
-24 D1 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C6 0C CA 6A CA 64 C4 22 C4 5C D1 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CC 06 4D 41 52
-4B 45 52 00 B0 12 8C CF BA 40 84 12 FC FF BA 40
-5A D1 FE FF 9A 42 CE 21 00 00 28 83 8A 48 02 00
-A2 52 CC 21 18 42 B6 21 19 42 B8 21 A8 49 FE FF
-89 48 00 00 30 4D D4 CE 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 21 A2 52 CC 21 BE 40 B0 C5 00 00
-2E 53 30 4D 32 D0 84 45 4C 53 45 00 A2 52 CC 21
-1A 42 CC 21 BA 40 AC C5 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C9 84 54 48 45 4E 00 9E 42 CC 21
-00 00 3E 4F 30 4D 4C D0 85 42 45 47 49 4E 30 40
-74 C7 E6 D1 85 55 4E 54 49 4C 39 40 B0 C5 A2 52
-CC 21 1A 42 CC 21 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CE 85 41 47 41 49 4E 39 40 AC C5 EF 3F
-C8 CF 85 57 48 49 4C 45 0D 12 87 12 AC D1 70 C4
-22 C4 EC CE 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D2 EC D1 22 C4 C6 D1 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 21 1E 42 CC 21 BE 40 C0 C5 FE FF
-A2 53 00 20 1A 42 00 20 8A 43 00 00 30 4D 6C D1
-84 4C 4F 4F 50 00 39 40 E2 C5 A2 52 CC 21 1A 42
-CC 21 8A 49 FC FF 8A 4E FE FF 1E 42 00 20 A2 83
-00 20 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C7 85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F
-80 D2 85 4C 45 41 56 45 1A 42 CC 21 BA 40 F2 C5
-00 00 BA 40 AC C5 02 00 B2 50 06 00 CC 21 A2 53
-00 20 2A 52 19 42 00 20 89 4A 00 00 30 4D C2 D2
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D2 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 D0 2C C4 10 00 2C C4
-00 00 C0 C5 2C C4 00 00 30 CC E2 C5 44 D3 74 C7
-2C C4 CE 21 3C C4 EA C4 30 CC F2 C4 1E D0 2C C4
-D0 21 F2 C4 22 C4 5E CE 05 46 4F 52 54 48 84 12
-5E D3 BA DD 7E D6 30 DF 68 D3 64 D6 B4 D2 F8 DE
-24 DE 42 DE 6C D4 06 DF 4C DE 00 00 AE DD 8A CE
-38 DE 00 00 24 D2 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 21 38 40 D2 21 B5 3F 06 CF 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 21 38 40
-D0 21 A2 3F F2 C9 04 4F 4E 4C 59 00 82 43 D2 21
-30 4D 58 D2 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 21 E0 21 30 4D 6E D3 CC D3 E0 D3 F0 D3
-3A 4E 82 4A CE 21 2E 4E 82 4E CC 21 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D3 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D3 60 D6 B8 DF 44 D2 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D4 92 42 0C 18 34 D4 EF 3F
-24 D4 08 50 57 52 5F 48 45 52 45 00 92 42 CE 21
-32 D4 92 42 CC 21 34 D4 30 4D 38 D4 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 21 0E 18 92 42 CC 21
-0C 18 EC 3F 28 D3 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 DA FF FA 23 B0 12 8A CD
-B2 40 B8 DF 0C 18 B2 40 60 D6 0E 18 CA 3F A8 D1
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C9 06 0D 1B 5B 37 6D 23 00 40 C9 5E C7 88 C9
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C9 2C C4 30 FF 74 C7 20 C5 26 C7 88 C9 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CD 86 D4 04 57
-41 52 4D 00 30 40 B8 D4 F8 D1 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02
-B2 D0 03 00 04 02 B2 40 FC FF 02 02 92 D3 02 02
-F2 43 22 02 F2 D3 26 02 F2 40 A5 00 A1 01 F2 40
-10 00 A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40
-FF 1E 80 01 B2 40 BA 00 82 01 B2 40 E8 01 84 01
-39 40 00 01 82 43 88 01 92 D2 5E 01 08 18 A2 93
-08 18 01 24 49 07 38 40 59 14 18 83 FE 23 19 83
-FA 23 3A 40 26 D5 39 40 DA FF 89 4A 00 00 29 53
-FC 23 92 42 02 18 E4 FF B2 40 18 00 0A 18 39 40
-00 20 89 43 00 00 29 53 39 90 FF 2F FA 2B 31 40
-E0 20 3F 40 80 20 37 40 22 C4 36 40 B4 C4 35 40
-00 C4 34 40 0C C4 B2 40 0A 00 E2 21 B2 43 B4 21
-92 C3 30 01 18 42 08 18 F2 B0 10 00 00 02 04 20
-38 E3 18 53 82 48 08 18 B2 40 81 00 00 05 B2 40
-11 00 06 05 B2 40 00 4A 08 05 F2 D0 30 00 0A 02
-92 C3 00 05 92 D3 1A 05 3D 40 2E D6 38 90 0A 00
-35 27 38 90 16 00 32 2F 28 93 0B 23 00 27 14 D5
-96 D3 09 41 53 53 45 4D 42 4C 45 52 84 12 5E D3
-88 DC F6 DC 3C DC 60 DD 02 DC 88 DD 06 D9 00 00
-F8 DB AC DC 5A DC 9A DC 16 DA 00 00 00 00 98 DD
-92 D3 B0 D4 85 48 49 32 4C 4F 0D 12 87 12 74 C7
-C0 D1 30 CC 82 CE 9C D3 3C D6 22 C4 1A D5 04 43
-4F 44 45 00 B0 12 8C CF A2 82 CC 21 0D 12 87 12
-7E CF AC C5 76 D6 00 00 07 45 4E 44 43 4F 44 45
-0D 12 87 12 B6 D3 36 CF 22 C4 32 D6 03 41 53 4D
-92 42 E0 21 C0 21 B2 40 40 D6 E0 21 E3 3F 98 D6
-06 45 4E 44 41 53 4D 00 92 42 C0 21 E0 21 E8 3F
-00 00 05 43 4F 4C 4F 4E 1A 42 CC 21 BA 40 0D 12
-00 00 BA 40 87 12 02 00 A2 52 CC 21 B2 43 BE 21
-30 40 B6 D3 00 00 05 4C 4F 32 48 49 A2 83 CC 21
-1A 42 CC 21 EE 3F 38 40 C6 21 39 48 2A 48 09 5A
-1A 52 CA 21 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A
-2A 88 82 4A CA 21 30 4D 87 12 0C CA 6A CA BA C5
-3A D7 24 CB B0 C5 70 CE 5C D7 3C D7 29 4E 39 90
-86 12 02 20 2E 53 30 41 39 90 85 12 03 20 1E 4E
-02 00 30 41 39 90 84 12 01 20 2E 52 30 41 19 42
-CC 21 A2 53 CC 21 89 4E 00 00 3E 40 29 00 12 12
-CA 21 92 53 CA 21 87 12 0C CA 24 CB B0 C5 8C D7
-82 D7 21 53 3E 90 10 00 BE 2D 30 41 8E D7 B2 41
-CA 21 22 D3 30 41 0D 12 87 12 20 C6 06 D7 A0 D7
-82 43 C4 21 92 42 CC 21 C2 21 A2 53 CC 21 0A 4E
-3E 4F FA 90 23 00 00 00 34 20 92 53 CA 21 B0 12
-28 D7 0E 93 04 20 B2 40 00 03 C4 21 27 3C 1E 93
-04 20 B2 40 10 03 C4 21 21 3C 2E 93 04 20 B2 40
-20 03 C4 21 1B 3C 2E 92 04 20 B2 40 20 02 C4 21
-15 3C 3E 92 04 20 B2 40 30 02 C4 21 0F 3C 3E 93
-04 20 B2 40 30 03 C4 21 09 3C B2 40 30 00 C4 21
-19 42 CC 21 A2 53 CC 21 89 4E 00 00 3E 4F 3D 41
-30 4D FA 90 26 00 00 00 08 20 B2 40 10 02 C4 21
-92 53 CA 21 B0 12 28 D7 EB 3F FA 90 40 00 00 00
-1A 20 B2 40 20 00 C4 21 92 53 CA 21 B0 12 6E D7
-0E 20 B2 50 10 00 C4 21 3E 40 2B 00 B0 12 6E D7
-33 24 92 92 C6 21 CA 21 02 24 92 53 CA 21 8E 10
-82 5E C4 21 D3 3F B0 12 6E D7 F9 23 B2 50 10 00
-C4 21 3E 40 28 00 B0 12 28 D7 B0 12 5E D7 E8 3F
-0D 12 87 12 20 C6 06 D7 9A D8 FE 90 26 00 00 00
-3E 40 20 00 04 20 B2 50 82 00 C4 21 C1 3F B0 12
-6E D7 DE 23 B2 50 80 00 C4 21 3E 40 28 00 B0 12
-28 D7 B0 12 5E D7 D4 23 3D 40 70 CE 30 4D 4C C8
-04 52 45 54 49 00 0D 12 87 12 2C C4 00 13 30 CC
-22 C4 2C C4 2C 00 96 D7 90 D8 EC D8 2E 4E 1E D2
-C4 21 19 42 C2 21 90 3F F6 D6 03 4D 4F 56 84 12
-E2 D8 00 40 FA D8 05 4D 4F 56 2E 42 84 12 E2 D8
-40 40 00 00 03 41 44 44 84 12 E2 D8 00 50 14 D9
-05 41 44 44 2E 42 84 12 E2 D8 40 50 20 D9 04 41
-44 44 43 00 84 12 E2 D8 00 60 2E D9 06 41 44 44
-43 2E 42 00 84 12 E2 D8 40 60 D0 D8 04 53 55 42
-43 00 84 12 E2 D8 00 70 4C D9 06 53 55 42 43 2E
-42 00 84 12 E2 D8 40 70 5A D9 03 53 55 42 84 12
-E2 D8 00 80 6A D9 05 53 55 42 2E 42 84 12 E2 D8
-40 80 D2 D6 03 43 4D 50 84 12 E2 D8 00 90 84 D9
-05 43 4D 50 2E 42 84 12 E2 D8 40 90 C0 D6 04 44
-41 44 44 00 84 12 E2 D8 00 A0 9E D9 06 44 41 44
-44 2E 42 00 84 12 E2 D8 40 A0 90 D9 03 42 49 54
-84 12 E2 D8 00 B0 BC D9 05 42 49 54 2E 42 84 12
-E2 D8 40 B0 C8 D9 03 42 49 43 84 12 E2 D8 00 C0
-D6 D9 05 42 49 43 2E 42 84 12 E2 D8 40 C0 E2 D9
-03 42 49 53 84 12 E2 D8 00 D0 F0 D9 05 42 49 53
-2E 42 84 12 E2 D8 40 D0 00 00 03 58 4F 52 84 12
-E2 D8 00 E0 0A DA 05 58 4F 52 2E 42 84 12 E2 D8
-40 E0 3C D9 03 41 4E 44 84 12 E2 D8 00 F0 24 DA
-05 41 4E 44 2E 42 84 12 E2 D8 40 F0 20 C6 96 D7
-42 DA 1A 42 C4 21 B2 F0 70 00 C4 21 8A 10 3A F0
-0F 00 82 DA C4 21 4A 3F 76 D9 03 52 52 43 84 12
-3C DA 00 10 5A DA 05 52 52 43 2E 42 84 12 3C DA
-40 10 66 DA 04 53 57 50 42 00 84 12 3C DA 80 10
-74 DA 03 52 52 41 84 12 3C DA 00 11 82 DA 05 52
-52 41 2E 42 84 12 3C DA 40 11 8E DA 03 53 58 54
-84 12 3C DA 80 11 00 00 04 50 55 53 48 00 84 12
-3C DA 00 12 A8 DA 06 50 55 53 48 2E 42 00 84 12
-3C DA 40 12 FC D9 04 43 41 4C 4C 00 84 12 3C DA
-80 12 2C C4 2C 00 96 D7 90 D8 DC DA 59 42 C4 21
-5A 42 C5 21 82 4A C4 21 BE 90 00 15 00 00 02 20
-0A 89 02 3C 09 8A 0A 49 3A 90 10 00 03 2C 5A 0E
-A8 3F 1A 53 0E 4A 0D 12 87 12 5E C7 88 C9 0D 6F
-75 74 20 6F 66 20 62 6F 75 6E 64 73 D4 CD B6 DA
-05 50 55 53 48 4D 84 12 D2 DA 00 15 20 DB 04 50
-4F 50 4D 00 84 12 D2 DA 00 17 20 C6 06 D7 40 DB
-82 43 C4 21 92 42 CC 21 C2 21 A2 53 CC 21 92 53
-CA 21 3E 40 2C 00 87 12 0C CA 24 CB B0 C5 70 CE
-90 D8 64 DB 0A 4E 3E 4F 1A 83 2A 92 CA 2F 8A 10
-5A 06 6F 3F 9C DA 04 52 52 43 4D 00 84 12 3A DB
-50 00 76 DB 04 52 52 41 4D 00 84 12 3A DB 50 01
-84 DB 04 52 4C 41 4D 00 84 12 3A DB 50 02 92 DB
-04 52 52 55 4D 00 84 12 3A DB 50 03 85 12 00 3C
-A0 DB 03 53 3E 3D 85 12 00 38 B2 DB 02 53 3C 00
-85 12 00 34 2E DB 03 30 3E 3D 85 12 00 30 C6 DB
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 21 30 4D
+F0 C4 05 41 4C 4C 4F 54 82 5E C6 21 3E 4F 30 4D
+EC C6 02 43 2C 00 1A 42 C6 21 CA 4E 00 00 92 53
+C6 21 3E 4F 30 4D 08 C6 03 4B 45 59 30 40 B0 C7
+18 42 0C 05 2F 83 8F 4E 00 00 B0 12 24 C8 92 B3
+1C 05 FD 27 1E 42 0C 05 B0 12 36 C8 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 21 00 00
+AF 4F 02 00 05 3C 82 C7 06 41 43 43 45 50 54 00
+3C 40 92 C8 3B 40 5C C8 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C8 92 B3 1C 05
+05 24 18 42 0C 05 38 90 0A 00 04 20 21 53 39 40
+4A C8 4D 15 A2 B3 1C 05 FD 27 B2 40 11 00 0E 05
+D2 C3 02 02 30 41 B2 40 13 00 0E 05 D2 D3 02 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C8 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 0C 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 1C 05 FD 27
+82 48 0E 05 30 4D 88 C8 2D 83 92 B3 1C 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 21 02 24 92 53
+DE 21 3E 8F 3D 41 30 4D 3C C7 04 45 4D 49 54 00
+30 40 B4 C8 08 4E 3E 4F E0 3F AA C8 04 45 43 48
+4F 00 B2 40 82 48 80 C8 82 43 DE 21 30 4D 5C C7
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C8 92 43
+DE 21 30 4D 0E C7 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C8 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C9 EF 3F 10 C9
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C7 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C9 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C9 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C7 02 43
+52 00 30 40 56 C9 0D 12 87 12 64 C9 02 0D 0A 00
+24 C9 22 C4 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C9 07 43 41 50 53 5F
+4F 4E B2 43 B4 21 30 4D 7A C9 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 21 30 4D FA C8 82 53 22 00
+0D 12 87 12 2C C4 64 C9 0C CC 94 C9 2C C4 22 00
+E8 C9 82 C9 B6 C9 3D 41 6E 4E 1E 83 82 5E C6 21
+3E 4F 92 B3 C6 21 A2 63 C6 21 30 4D D0 C8 82 2E
+22 00 0D 12 87 12 A0 C9 2C C4 24 C9 0C CC 22 C4
+00 00 04 57 4F 52 44 00 3C 40 C0 21 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 21 F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 21 82 4A
+C4 21 1E 42 C6 21 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 21 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C4 34 40
+0C C4 30 4D 8C C5 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 21 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 21 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 CB 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 CB 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C6 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 21 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C8 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C5 01 2C 1A 42 C6 21
+A2 53 C6 21 8A 4E 00 00 3E 4F 30 4D 0A CC 87 4C
+49 54 45 52 41 4C 82 93 BE 21 0F 24 1A 42 C6 21
+A2 52 C6 21 BA 40 2C C4 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C9 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 21 82 4E C0 21 B2 4F C2 21 3E 4F
+30 4D 0D 12 87 12 62 CC 20 C6 E8 C9 7E CC 3D 40
+86 CC E1 22 48 3E 88 CC 0A 4E 3E 4F 3D 40 9E CC
+37 27 3D 40 78 CC 1A E2 BE 21 B8 27 B2 23 A0 CC
+3E 4F 3D 40 78 CC BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CF CC 3F FA CB 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 21 3C 49 3B 49
+3A 49 3D 15 87 12 72 CC DA CC B2 41 C4 21 B2 41
+C2 21 B2 41 C0 21 3D 41 30 4D 94 C5 04 51 55 49
+54 00 31 40 E0 20 B2 40 00 20 00 20 82 43 BE 21
+82 43 08 18 87 12 64 C9 05 0D 0A 6F 6B 20 24 C9
+CE C7 EC C8 72 CC D6 C4 68 C5 64 C9 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CD 2C C4 30 FF
+74 C7 A4 C5 64 C9 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CD 38 C6 EA C4 B0 C5 06 CD 64 C9 05 0D
+0A 20 20 20 AC C5 0E CD E8 C7 05 41 42 4F 52 54
+3F 40 80 20 C6 3F B2 40 B2 D4 B0 D4 B2 40 4E C8
+4C C8 B2 40 B4 C8 B2 C8 B2 40 56 C9 54 C9 B2 40
+B0 C7 AE C7 38 40 0A 00 82 48 DC 21 88 43 E8 21
+28 83 FC 2F B2 40 0A 00 DC 21 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C8 B0 12
+72 CD A2 B3 1C 05 FD 27 B2 40 11 00 0E 05 D2 C3
+02 02 92 C3 1C 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 1C 05 F3 23 0D 12 87 12
+64 C9 04 1B 5B 37 6D 00 24 C9 2C C4 DE 21 EA C4
+4C C4 B0 C5 06 CE 64 C9 05 6C 69 6E 65 3A 24 C9
+38 C5 26 C7 C2 C8 24 C9 64 C9 04 1B 5B 30 6D 00
+24 C9 2A D4 82 C9 60 CD 5A CD 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C9 2C C4 9C CD 0C CC 22 C4
+40 CA 01 27 0D 12 87 12 20 C6 E8 C9 46 CA B0 C5
+44 CE 22 C4 A8 CC 3E C6 81 5C 92 42 C0 21 C4 21
+30 4D 00 00 81 5B 82 43 BE 21 30 4D 48 CE 01 5D
+B2 43 BE 21 30 4D 54 CE 83 5B 27 5D 0D 12 87 12
+34 CE 2C C4 2C C4 0C CC 0C CC 22 C4 BE 4F 02 00
+3E 4F 30 4D 6E C7 82 49 53 00 0D 12 87 12 38 C6
+EA C4 B0 C5 A0 CE 6C CE 2C C4 7C CE 0C CC 22 C4
+34 CE 7C CE 22 C4 86 CE 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 21 FA D0 80 00 00 00 30 4D 9C C9
+87 52 45 43 55 52 53 45 19 42 C6 21 99 42 BA 21
+00 00 A2 53 C6 21 30 4D EC CC 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C6 E8 C9 46 CA 4C C4
+B0 C5 44 CE 68 C5 B0 C5 06 CF 2C C4 2C C4 0C CC
+0C CC 2C C4 0C CC 0C CC 22 C4 82 9F BC 21 40 25
+0D 12 87 12 64 C9 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CD 68 CE 81 3B 82 93 BE 21
+8C 27 0D 12 87 12 2C C4 22 C4 0C CC 0A CF 56 CE
+22 C4 2A CF 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 21 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CF BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 21 82 4F BC 21 30 4D 44 CF 01 3A 30 12
+64 CF 0D 12 87 12 C2 C9 20 C6 E8 C9 8E CF 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 21 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CF 02 00 82 48 B6 21 82 49 B8 21 82 4A BA 21
+2A 52 82 4A C6 21 30 41 E2 C9 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CF BA 40 86 12 FC FF DC 3C
+4E CC 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CF
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CF
+06 43 52 45 41 54 45 00 B0 12 82 CF BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CC 05 44 4F 45 53 3E
+1A 42 BA 21 BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A D0 05 44 45 46 45 52 B0 12 82 CF AC 3C
+A6 CA 05 3E 42 4F 44 59 2E 52 30 4D 00 D0 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CF
+86 5B 54 48 45 4E 5D 00 30 4D 80 D0 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C4 01 00 20 C6 E8 C9
+54 CC 3C C4 B0 C5 00 D1 82 C4 82 C4 64 C9 04 5B
+49 46 5D 00 56 D0 BA C5 C2 D0 46 C9 2E C5 AC C5
+F8 D0 82 C4 82 C4 64 C9 06 5B 45 4C 53 45 5D 00
+56 D0 BA C5 E6 D0 46 C9 38 C5 3C C4 B0 C5 F8 D0
+2E C5 AC C5 F8 D0 64 C9 06 5B 54 48 45 4E 5D 00
+56 D0 BA C5 F8 D0 38 C5 4C C4 BA C5 9C D0 22 C4
+46 C9 64 C9 05 0D 0A 6B 6F 20 24 C9 CE C7 62 CC
+AC C5 9C D0 8C D0 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 D1 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C6 E8 C9 46 CA 64 C4 22 C4 26 D1
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 D1 5C C5 22 C4 58 D1 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CC 06 4D 41 52 4B 45 52 00
+B0 12 82 CF BA 40 84 12 FC FF BA 40 56 D1 FE FF
+9A 42 C8 21 00 00 28 83 8A 48 02 00 A2 52 C6 21
+18 42 B6 21 19 42 B8 21 A8 49 FE FF 89 48 00 00
+30 4D A8 CE 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 21 A2 52 C6 21 BE 40 B0 C5 00 00 2E 53 30 4D
+34 D0 84 45 4C 53 45 00 A2 52 C6 21 1A 42 C6 21
+BA 40 AC C5 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C9 84 54 48 45 4E 00 9E 42 C6 21 00 00 3E 4F
+30 4D 4E D0 85 42 45 47 49 4E 30 40 74 C7 E2 D1
+85 55 4E 54 49 4C 39 40 B0 C5 A2 52 C6 21 1A 42
+C6 21 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CE
+85 41 47 41 49 4E 39 40 AC C5 EF 3F CA CF 85 57
+48 49 4C 45 0D 12 87 12 A8 D1 70 C4 22 C4 C0 CE
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D2 E8 D1
+22 C4 C2 D1 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 21 1E 42 C6 21 BE 40 C0 C5 FE FF A2 53 00 20
+1A 42 00 20 8A 43 00 00 30 4D 68 D1 84 4C 4F 4F
+50 00 39 40 E2 C5 A2 52 C6 21 1A 42 C6 21 8A 49
+FC FF 8A 4E FE FF 1E 42 00 20 A2 83 00 20 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C7
+85 2B 4C 4F 4F 50 39 40 D0 C5 E5 3F 7C D2 85 4C
+45 41 56 45 1A 42 C6 21 BA 40 F2 C5 00 00 BA 40
+AC C5 02 00 B2 50 06 00 C6 21 A2 53 00 20 2A 52
+19 42 00 20 89 4A 00 00 30 4D BE D2 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D2 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 D0 2C C4 10 00 2C C4 00 00 C0 C5
+2C C4 00 00 0C CC E2 C5 40 D3 74 C7 2C C4 C8 21
+3C C4 EA C4 0C CC F2 C4 20 D0 2C C4 CA 21 F2 C4
+22 C4 32 CE 05 46 4F 52 54 48 84 12 5A D3 7A DD
+F0 D6 F0 DE 64 D3 4C D6 B0 D2 B8 DE E4 DD 02 DE
+68 D4 C6 DE 0C DE 00 00 6E DD 5E CE F8 DD 00 00
+20 D2 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 21
+38 40 CC 21 B5 3F DA CE 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 21 38 40 CA 21 A2 3F
+CE C9 04 4F 4E 4C 59 00 82 43 CC 21 30 4D 54 D2
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 21
+DA 21 30 4D 6A D3 C8 D3 DC D3 EC D3 3A 4E 82 4A
+C8 21 2E 4E 82 4E C6 21 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D3
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D3 48 D6
+78 DF 40 D2 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D4 92 42 0C 18 30 D4 EF 3F 20 D4 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 21 2E D4 92 42
+C6 21 30 D4 30 4D 34 D4 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 21 0E 18 92 42 C6 21 0C 18 EC 3F
+24 D3 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CD B2 40 78 DF 0C 18 B2 40
+48 D6 0E 18 CC 3F 82 D4 04 57 41 52 4D 00 30 40
+B2 D4 1E 42 08 18 0D 12 87 12 64 C9 06 0D 1B 5B
+37 6D 23 00 24 C9 5E C7 64 C9 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C9 2C C4 30 FF
+74 C7 20 C5 26 C7 64 C9 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CD F4 D1 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A CC 01 B2 43 06 02 B2 D0
+03 00 04 02 B2 40 FC FF 02 02 92 D3 02 02 F2 43
+22 02 F2 D3 26 02 F2 40 A5 00 A1 01 F2 40 10 00
+A0 01 D2 43 A1 01 B2 40 00 A5 60 01 B2 40 FF 1E
+80 01 B2 40 BA 00 82 01 B2 40 E8 01 84 01 39 40
+00 01 82 43 88 01 92 D2 5E 01 08 18 A2 93 08 18
+01 24 49 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+39 40 26 00 29 83 B9 40 14 D5 DA FF FB 23 B2 40
+54 C8 E4 FF B2 40 18 00 0A 18 39 40 00 10 29 83
+89 43 00 20 FC 23 31 40 E0 20 3F 40 80 20 37 40
+22 C4 36 40 B4 C4 35 40 00 C4 34 40 0C C4 B2 40
+0A 00 DC 21 B2 43 B4 21 92 C3 30 01 18 42 08 18
+F2 B0 10 00 00 02 04 20 38 E3 18 53 82 48 08 18
+B2 40 81 00 00 05 92 42 02 18 06 05 92 42 04 18
+08 05 F2 D0 30 00 0A 02 92 C3 00 05 92 D3 1A 05
+3D 40 16 D6 38 90 0A 00 3F 27 38 90 16 00 3C 2F
+28 93 15 23 0A 27 AE D4 92 D3 09 41 53 53 45 4D
+42 4C 45 52 84 12 5A D3 48 DC B6 DC FC DB 20 DD
+C2 DB 48 DD DC D8 00 00 B8 DB 6C DC 1A DC 5A DC
+EC D9 00 00 00 00 58 DD 8E D3 A4 D1 85 48 49 32
+4C 4F 0D 12 87 12 74 C7 BC D1 0C CC 56 CE 98 D3
+24 D6 22 C4 08 D5 04 43 4F 44 45 00 B0 12 82 CF
+A2 82 C6 21 0D 12 87 12 74 CF AC C5 5E D6 00 00
+07 45 4E 44 43 4F 44 45 0D 12 87 12 B2 D3 0A CF
+22 C4 1A D6 03 41 53 4D 92 42 DA 21 E0 21 B2 40
+28 D6 DA 21 E3 3F 80 D6 06 45 4E 44 41 53 4D 00
+92 42 E0 21 DA 21 E8 3F 00 00 05 43 4F 4C 4F 4E
+1A 42 C6 21 BA 40 0D 12 00 00 BA 40 87 12 02 00
+A2 52 C6 21 B2 43 BE 21 30 40 B2 D3 00 00 05 4C
+4F 32 48 49 A2 83 C6 21 1A 42 C6 21 EE 3F 66 D6
+07 43 4F 44 45 4E 4E 4D 0D 12 87 12 4C CF 56 CE
+02 D7 3D 41 2A 82 82 4A C6 21 B4 3F 38 40 C0 21
+39 48 2A 48 09 5A 1A 52 C4 21 09 9A 03 24 7E 9A
+FC 27 1A 83 0E 4A 2A 88 82 4A C4 21 30 4D 1C 15
+87 12 E8 C9 46 CA BA C5 42 D7 00 CB B0 C5 44 CE
+64 D7 44 D7 29 4E 39 90 86 12 02 20 2E 53 0A 3C
+39 90 85 12 03 20 1E 4E 02 00 04 3C 39 90 84 12
+01 20 2E 52 1B 17 30 41 3E 40 28 00 B0 12 2E D7
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 40 29 00
+1C 15 12 12 C4 21 92 53 C4 21 87 12 E8 C9 00 CB
+B0 C5 A0 D7 96 D7 21 53 3E 90 10 00 84 2D E2 2B
+A2 D7 B2 41 C4 21 DE 3F 0D 12 87 12 20 C6 0C D7
+B2 D7 0C 43 1B 42 C6 21 A2 53 C6 21 0A 4E 3E 4F
+FA 90 23 00 00 00 2D 20 92 53 C4 21 B0 12 2E D7
+0E 93 03 20 3C 40 00 03 21 3C 1E 93 03 20 3C 40
+10 03 1C 3C 2E 93 03 20 3C 40 20 03 17 3C 2E 92
+03 20 3C 40 20 02 12 3C 3E 92 03 20 3C 40 30 02
+0D 3C 3E 93 03 20 3C 40 30 03 08 3C 3C 40 30 00
+19 42 C6 21 A2 53 C6 21 89 4E 00 00 3E 4F 3D 41
+30 4D FA 90 26 00 00 00 07 20 3C 40 10 02 92 53
+C4 21 B0 12 2E D7 EC 3F FA 90 40 00 00 00 16 20
+3C 40 20 00 92 53 C4 21 B0 12 80 D7 0C 20 3C 50
+10 00 3E 40 2B 00 B0 12 80 D7 92 92 C0 21 C4 21
+02 24 92 53 C4 21 8E 10 0C 5E D8 3F B0 12 80 D7
+FA 23 3C 50 10 00 B0 12 68 D7 EF 3F 0D 12 87 12
+20 C6 0C D7 86 D8 FE 90 26 00 00 00 3E 40 20 00
+03 20 3C 50 82 00 CB 3F B0 12 80 D7 E5 23 3C 50
+80 00 B0 12 68 D7 E0 3F 44 C8 04 52 45 54 49 00
+0D 12 87 12 2C C4 00 13 0C CC 22 C4 2C C4 2C 00
+A8 D7 7C D8 C6 D8 2E 4E 0E DC 09 4B A5 3F DE D6
+03 4D 4F 56 84 12 BC D8 00 40 D0 D8 05 4D 4F 56
+2E 42 84 12 BC D8 40 40 00 00 03 41 44 44 84 12
+BC D8 00 50 EA D8 05 41 44 44 2E 42 84 12 BC D8
+40 50 F6 D8 04 41 44 44 43 00 84 12 BC D8 00 60
+04 D9 06 41 44 44 43 2E 42 00 84 12 BC D8 40 60
+AA D8 04 53 55 42 43 00 84 12 BC D8 00 70 22 D9
+06 53 55 42 43 2E 42 00 84 12 BC D8 40 70 30 D9
+03 53 55 42 84 12 BC D8 00 80 40 D9 05 53 55 42
+2E 42 84 12 BC D8 40 80 BA D6 03 43 4D 50 84 12
+BC D8 00 90 5A D9 05 43 4D 50 2E 42 84 12 BC D8
+40 90 A8 D6 04 44 41 44 44 00 84 12 BC D8 00 A0
+74 D9 06 44 41 44 44 2E 42 00 84 12 BC D8 40 A0
+66 D9 03 42 49 54 84 12 BC D8 00 B0 92 D9 05 42
+49 54 2E 42 84 12 BC D8 40 B0 9E D9 03 42 49 43
+84 12 BC D8 00 C0 AC D9 05 42 49 43 2E 42 84 12
+BC D8 40 C0 B8 D9 03 42 49 53 84 12 BC D8 00 D0
+C6 D9 05 42 49 53 2E 42 84 12 BC D8 40 D0 00 00
+03 58 4F 52 84 12 BC D8 00 E0 E0 D9 05 58 4F 52
+2E 42 84 12 BC D8 40 E0 12 D9 03 41 4E 44 84 12
+BC D8 00 F0 FA D9 05 41 4E 44 2E 42 84 12 BC D8
+40 F0 20 C6 A8 D7 18 DA 0A 4C 3C F0 70 00 8A 10
+3A F0 0F 00 0C DA 4F 3F 4C D9 03 52 52 43 84 12
+12 DA 00 10 2A DA 05 52 52 43 2E 42 84 12 12 DA
+40 10 36 DA 04 53 57 50 42 00 84 12 12 DA 80 10
+44 DA 03 52 52 41 84 12 12 DA 00 11 52 DA 05 52
+52 41 2E 42 84 12 12 DA 40 11 5E DA 03 53 58 54
+84 12 12 DA 80 11 00 00 04 50 55 53 48 00 84 12
+12 DA 00 12 78 DA 06 50 55 53 48 2E 42 00 84 12
+12 DA 40 12 D2 D9 04 43 41 4C 4C 00 84 12 12 DA
+80 12 1A 53 0E 4A 0D 12 87 12 5E C7 64 C9 0D 6F
+75 74 20 6F 66 20 62 6F 75 6E 64 73 A8 CD 20 C6
+0C D7 C4 DA 0C 43 1B 42 C6 21 A2 53 C6 21 92 53
+C4 21 3E 40 2C 00 1C 15 87 12 E8 C9 00 CB B0 C5
+44 CE E4 DA 1B 17 87 12 7C D8 EC DA 0A 4E 3E 4F
+1A 83 D7 33 29 4E 59 0E 0A 28 08 4C 59 0A 01 28
+0C 8A 08 8A 38 90 10 00 CC 2F 5A 0E 8B 3F 2A 92
+C8 2F 8A 10 5A 06 86 3F 6C DA 04 52 52 43 4D 00
+84 12 BE DA 50 00 1A DB 04 52 52 41 4D 00 84 12
+BE DA 50 01 28 DB 04 52 4C 41 4D 00 84 12 BE DA
+50 02 36 DB 04 52 52 55 4D 00 84 12 BE DA 50 03
+86 DA 05 50 55 53 48 4D 84 12 BE DA 00 15 52 DB
+04 50 4F 50 4D 00 84 12 BE DA 00 17 85 12 00 3C
+44 DB 03 53 3E 3D 85 12 00 38 72 DB 02 53 3C 00
+85 12 00 34 60 DB 03 30 3E 3D 85 12 00 30 86 DB
 02 30 3C 00 85 12 00 30 00 00 02 55 3C 00 85 12
-00 2C DA DB 03 55 3E 3D 85 12 00 28 D0 DB 03 30
-3C 3E 85 12 00 24 EE DB 02 30 3D 00 85 12 00 20
-58 C8 02 49 46 00 1A 42 CC 21 8A 4E 00 00 A2 53
-CC 21 0E 4A 30 4D E4 DB 04 54 48 45 4E 00 1A 42
-CC 21 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90
-00 02 68 2F 88 DA 00 00 30 4D AC D9 04 45 4C 53
-45 00 1A 42 CC 21 BA 40 00 3C 00 00 A2 53 CC 21
-2F 83 8F 4A 00 00 E3 3F 18 DC 05 55 4E 54 49 4C
-3A 4F 08 4E 3E 4F 19 42 CC 21 2A 83 0A 89 0A 11
-3A 90 00 FE 47 3B 3A F0 FF 03 08 DA 89 48 00 00
-A2 53 CC 21 30 4D 30 DA 05 41 47 41 49 4E 0D 12
-87 12 AC DB 60 DC 22 C4 00 00 05 57 48 49 4C 45
-0D 12 87 12 06 DC 70 C4 22 C4 BC DB 06 52 45 50
-45 41 54 00 0D 12 87 12 AC DB 60 DC 1E DC 22 C4
-C2 DC 3D 41 08 4E 3E 4F 2A 48 0A 93 04 20 98 42
-CC 21 00 00 30 4D 88 43 00 00 C3 3F C6 DA 03 42
-57 31 84 12 C0 DC 00 00 DE DC 03 42 57 32 84 12
-C0 DC 00 00 EA DC 03 42 57 33 84 12 C0 DC 00 00
-02 DD 3D 41 1A 42 CC 21 28 4E 08 93 08 20 BA 4F
-00 00 A2 53 CC 21 8E 4A 00 00 3E 4F 30 4D 8E 43
-00 00 80 3F 00 00 03 46 57 31 84 12 00 DD 00 00
-26 DD 03 46 57 32 84 12 00 DD 00 00 32 DD 03 46
-57 33 84 12 00 DD 00 00 3E 90 00 30 07 24 3E E0
-00 04 3E B0 00 10 02 24 3E E0 00 08 30 4D 3E DD
-04 47 4F 54 4F 00 0D 12 87 12 AC DB 60 CE 26 CC
-22 C4 00 00 05 3F 47 4F 54 4F 0D 12 87 12 48 DD
-60 CE 26 CC 22 C4 00 00 03 4A 4D 50 0D 12 87 12
-60 CE 8E DC 22 C4 74 DD 04 3F 4A 4D 50 00 0D 12
-87 12 48 DD 60 CE 70 C4 60 DC 22 C4 42 D1 07 7B
-54 4F 4F 4C 53 7D 30 4D AC D6 03 41 4E 44 3E FF
-30 4D C6 D3 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83
+00 2C 9A DB 03 55 3E 3D 85 12 00 28 90 DB 03 30
+3C 3E 85 12 00 24 AE DB 02 30 3D 00 85 12 00 20
+00 00 02 49 46 00 1A 42 C6 21 8A 4E 00 00 A2 53
+C6 21 0E 4A 30 4D A4 DB 04 54 48 45 4E 00 1A 42
+C6 21 08 4E 3E 4F 09 48 29 53 0A 89 0A 11 3A 90
+00 02 58 2F 88 DA 00 00 30 4D 82 D9 04 45 4C 53
+45 00 1A 42 C6 21 BA 40 00 3C 00 00 A2 53 C6 21
+2F 83 8F 4A 00 00 E3 3F D8 DB 05 55 4E 54 49 4C
+3A 4F 08 4E 3E 4F 19 42 C6 21 2A 83 0A 89 0A 11
+3A 90 00 FE 37 3B 3A F0 FF 03 08 DA 89 48 00 00
+A2 53 C6 21 30 4D 06 DA 05 41 47 41 49 4E 0D 12
+87 12 6C DB 20 DC 22 C4 00 00 05 57 48 49 4C 45
+0D 12 87 12 C6 DB 70 C4 22 C4 7C DB 06 52 45 50
+45 41 54 00 0D 12 87 12 6C DB 20 DC DE DB 22 C4
+82 DC 3D 41 2E 4E 08 4E 3E 4F 2A 48 0A 93 88 43
+00 00 C7 23 98 42 C6 21 00 00 30 4D 96 DA 03 42
+57 31 84 12 80 DC E2 21 9E DC 03 42 57 32 84 12
+80 DC E4 21 AA DC 03 42 57 33 84 12 80 DC E6 21
+C2 DC 3D 41 1A 42 C6 21 2E 4E 28 4E 8E 43 00 00
+08 93 88 23 BA 4F 00 00 A2 53 C6 21 8E 4A 00 00
+3E 4F 30 4D 00 00 03 46 57 31 84 12 C0 DC E8 21
+E6 DC 03 46 57 32 84 12 C0 DC EA 21 F2 DC 03 46
+57 33 84 12 C0 DC EC 21 3E 90 00 30 07 24 3E E0
+00 04 3E B0 00 10 02 24 3E E0 00 08 30 4D FE DC
+04 47 4F 54 4F 00 0D 12 87 12 6C DB 34 CE 02 CC
+22 C4 00 00 05 3F 47 4F 54 4F 0D 12 87 12 08 DD
+34 CE 02 CC 22 C4 00 00 03 4A 4D 50 0D 12 87 12
+34 CE 4E DC 22 C4 34 DD 04 3F 4A 4D 50 00 0D 12
+87 12 08 DD 34 CE 70 C4 20 DC 22 C4 40 D1 07 7B
+54 4F 4F 4C 53 7D 30 4D 94 D6 03 41 4E 44 3E FF
+30 4D C2 D3 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83
 8F 4E FA FF 3E 40 80 20 2E 83 8F 4E FC FF 3F 80
-06 00 2E 8F 0E 11 0D 12 87 12 2C C4 3C 00 D2 C8
-5E C7 2C C4 08 00 D2 C8 2C C4 3E 00 D2 C8 08 C9
-82 C4 82 C4 8E C5 BA C5 10 DE 5A C4 5A C4 22 C4
-C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00 D0 C5 12 DE
-22 C4 C4 DD 03 2E 52 53 8F 4E FE FF 8F 41 FA FF
-3E 40 E0 20 D2 3F CA CA 01 3F 2E 4E 30 40 26 C7
-52 D4 03 50 41 44 85 12 E4 20 0E D5 05 57 4F 52
-44 53 0D 12 87 12 84 C9 2C C4 03 00 1E C9 2C C4
-D0 21 EA C4 46 DE 2C C4 10 00 3C C4 18 C5 F6 D2
+06 00 2E 8F 0E 11 0D 12 87 12 2C C4 3C 00 B0 C8
+5E C7 2C C4 08 00 B0 C8 2C C4 3E 00 B0 C8 EC C8
+82 C4 82 C4 8E C5 BA C5 D0 DD 5A C4 5A C4 22 C4
+C0 C5 F8 C5 EA C4 26 C7 2C C4 02 00 D0 C5 D2 DD
+22 C4 84 DD 03 2E 52 53 8F 4E FE FF 8F 41 FA FF
+3E 40 E0 20 D2 3F 42 D0 01 3F 2E 4E 30 40 26 C7
+4E D4 03 50 41 44 85 12 E4 20 A8 D4 05 57 4F 52
+44 53 0D 12 87 12 52 C9 2C C4 03 00 02 C9 2C C4
+CA 21 EA C4 06 DE 2C C4 10 00 3C C4 18 C5 F2 D2
 2C C4 00 00 3C C4 2C C4 10 00 3C C4 18 C5 2C C4
-00 00 C0 C5 3C C4 F8 C5 46 DE 18 C5 EA C4 A4 C5
-B0 C5 A2 DE 5A C4 5A C4 F8 C5 3C C4 46 DE 18 C5
-EA C4 2C C4 02 00 D0 C5 84 DE 4C C4 B0 C5 E4 DE
-3C C4 2C C4 02 00 20 C5 EA C4 92 C4 46 DE 18 C5
-F2 C4 3C C4 78 CC 2C C4 7F 00 BE DD 40 C9 00 C5
-2C C4 0F 00 BE DD 2C C4 10 00 70 C4 20 C5 1E C9
-AC C5 70 DE 5A C4 22 C4 F0 D2 03 4D 41 58 2E 9F
-07 38 2F 53 30 4D EA DE 03 4D 49 4E 2E 9F F9 3B
-3E 4F 30 4D 04 D2 03 55 2E 52 0D 12 87 12 A8 C4
+00 00 C0 C5 3C C4 F8 C5 06 DE 18 C5 EA C4 A4 C5
+B0 C5 62 DE 5A C4 5A C4 F8 C5 3C C4 06 DE 18 C5
+EA C4 2C C4 02 00 D0 C5 44 DE 4C C4 B0 C5 A4 DE
+3C C4 2C C4 02 00 20 C5 EA C4 92 C4 06 DE 18 C5
+F2 C4 3C C4 54 CC 2C C4 7F 00 7E DD 24 C9 00 C5
+2C C4 0F 00 7E DD 2C C4 10 00 70 C4 20 C5 02 C9
+AC C5 30 DE 5A C4 22 C4 EC D2 03 4D 41 58 2E 9F
+07 38 2F 53 30 4D AA DE 03 4D 49 4E 2E 9F F9 3B
+3E 4F 30 4D 00 D2 03 55 2E 52 0D 12 87 12 A8 C4
 42 C6 2C C4 00 00 A2 C6 D4 C6 F0 C6 B4 C4 82 C4
-20 C5 2C C4 00 00 EE DE 1E C9 40 C9 22 C4 D4 D3
-04 44 55 4D 50 00 0D 12 12 12 E2 21 B2 40 10 00
-E2 21 2E 5F 87 12 70 C4 82 C4 82 C4 26 C7 2C C4
-01 00 20 C5 26 C7 2C C4 FE FF BE DD C0 C5 84 C9
-F8 C5 2C C4 07 00 0A DF 08 C9 F8 C5 2C C4 10 00
-18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 03 00 0A DF
-E2 C5 76 DF 08 C9 08 C9 F8 C5 2C C4 10 00 18 C5
-F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00 FC DE 20 C6
-EE DE D2 C8 E2 C5 94 DF 2C C4 10 00 D0 C5 5E DF
+20 C5 2C C4 00 00 AE DE 02 C9 24 C9 22 C4 D0 D3
+04 44 55 4D 50 00 0D 12 12 12 DC 21 B2 40 10 00
+DC 21 2E 5F 87 12 70 C4 82 C4 82 C4 26 C7 2C C4
+01 00 20 C5 26 C7 2C C4 FE FF 7E DD C0 C5 52 C9
+F8 C5 2C C4 07 00 CA DE EC C8 F8 C5 2C C4 10 00
+18 C5 F8 C5 C0 C5 F8 C5 00 C5 2C C4 03 00 CA DE
+E2 C5 36 DF EC C8 EC C8 F8 C5 2C C4 10 00 18 C5
+F8 C5 C0 C5 F8 C5 00 C5 2C C4 7E 00 BC DE 20 C6
+AE DE B0 C8 E2 C5 54 DF 2C C4 10 00 D0 C5 1E DF
 B4 C4 2C C6 F2 C4 22 C4
 @FFFE
-26 D5
+14 D5
 q
index c0c4a7e..f02b912 100644 (file)
@@ -1,6 +1,6 @@
 @1800
-10 00 66 C6 C0 5D 80 04 05 00 18 00 D0 DD 78 D4
-2C C6 3E C6 00 00 00 00
+10 00 0D 00 01 49 C0 5D 05 00 18 00 90 DD 60 D4
+24 C6 36 C6 00 00 00 00 00 00
 @C200
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +36,7 @@ F9 3F 64 C3 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C3 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C3 02 42 4C 00
-85 12 20 00 1C C4 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C C4 04 42 41 53 45 00 85 12 DC 1D
 C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA C3 06 55 4D 2F
 4D 4F 44 00 30 12 5A C2 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +44,7 @@ C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C2 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C4
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 C4
 02 23 53 00 0D 12 87 12 A2 C4 DC C4 2D 83 09 93
@@ -53,400 +53,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C4 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C4 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C4 02 55 2E 00 0D 12 87 12 42 C4 2C C2 00 00
-D4 C4 F0 C4 40 C7 08 C7 22 C2 3E C3 02 44 2E 00
+D4 C4 F0 C4 24 C7 EC C6 22 C2 3E C3 02 44 2E 00
 0D 12 87 12 42 C4 70 C2 82 C2 44 C3 D4 C4 92 C2
-14 C5 F0 C4 40 C7 08 C7 22 C2 7C C2 01 2E 0E 93
+14 C5 F0 C4 24 C7 EC C6 22 C2 7C C2 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C5 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 C2 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC C4 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E C5 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C C6 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 3E C6 30 4D 08 C4 03 4B
-45 59 30 40 AE C5 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 C5
-06 41 43 43 45 50 54 00 3C 40 A4 C6 3B 40 6E C6
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C6 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 52 C6 4D 15 A2 B3 DC 05
-FD 27 B2 40 11 00 CE 05 E2 C2 03 02 30 41 B2 40
-13 00 CE 05 E2 D2 03 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C6 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 CC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05
-FD 27 82 48 CE 05 30 4D 9A C6 2D 83 92 B3 DC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 C5 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C5 04 45 4D 49
-54 00 30 40 C4 C6 CC C6 04 45 43 48 4F 00 B2 40
-82 48 92 C6 82 43 E4 1D 30 4D 5C C5 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C6 92 43 E4 1D 30 4D
-0E C5 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C7 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C7 EF 3F 2C C7 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C5 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C7 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C7 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C6 04 28 43 52 29 00
-0D 12 87 12 88 C7 02 0D 0A 00 40 C7 22 C2 92 C5
-02 43 52 00 30 40 70 C7 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C7 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E C7 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 C7
-82 53 22 00 0D 12 87 12 2C C2 88 C7 30 CA B8 C7
-2C C2 22 00 0C C8 A6 C7 DA C7 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC C6 82 2E 22 00 0D 12 87 12 C4 C7 2C C2 40 C7
-30 CA 22 C2 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C2 34 40 0C C2 30 4D 8C C3 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 C9 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 C9 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C4 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C6 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C3 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E CA 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C C2 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C7 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 CA 20 C4 0C C8
-A2 CA 3D 40 AA CA E1 22 44 3E AC CA 0A 4E 3E 4F
-3D 40 C2 CA 37 27 3D 40 9C CA 1A E2 BE 1D B8 27
-B2 23 C4 CA 3E 4F 3D 40 9C CA BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CD CC 3F
-1E CA 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 CA FE CA B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 C3
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 C7 05 0D 0A 6F
-6B 20 40 C7 D6 C5 08 C7 96 CA D6 C2 68 C3 88 C7
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CB
-2C C2 30 FF 74 C5 A4 C3 88 C7 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CB 38 C4 EA C2 B0 C3 2A CB
-88 C7 05 0D 0A 20 20 20 AC C3 32 CB F0 C5 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 D2 16 D3
-B2 40 60 C6 54 C6 B2 40 C4 C6 D4 C6 B2 40 70 C7
-86 C7 B2 40 AE C5 D4 C5 82 43 FE DA 82 43 0A DB
-82 43 16 DB 82 43 46 DB 82 43 52 DB 82 43 5E DB
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C6 B0 12 96 CB A2 B3
-DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 03 02 92 C3
-DC 05 38 40 F0 FF 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 DC 05 F3 23 0D 12 87 12 88 C7 04 1B
-5B 37 6D 00 40 C7 2C C2 E4 1D EA C2 4C C2 B0 C3
-32 CC 88 C7 05 6C 69 6E 65 3A 40 C7 38 C3 26 C5
-DE C6 40 C7 88 C7 04 1B 5B 30 6D 00 40 C7 2E D2
-A6 C7 84 CB 7E CB 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C7 2C C2 C8 CB 30 CA 22 C2 64 C8 01 27
-0D 12 87 12 20 C4 0C C8 6A C8 B0 C3 70 CC 22 C2
-CC CA 3E C4 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 CC 01 5D B2 43 BE 1D
-30 4D 80 CC 83 5B 27 5D 0D 12 87 12 60 CC 2C C2
-2C C2 30 CA 30 CA 22 C2 BE 4F 02 00 3E 4F 30 4D
-6A C7 82 49 53 00 0D 12 87 12 38 C4 EA C2 B0 C3
-CC CC 98 CC 2C C2 A8 CC 30 CA 22 C2 60 CC A8 CC
-22 C2 B2 CC 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 C7 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 CB 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C4 0C C8 6A C8 4C C2 B0 C3 70 CC
-68 C3 B0 C3 32 CD 2C C2 2C C2 30 CA 30 CA 2C C2
-30 CA 30 CA 22 C2 82 9F BC 1D 2C 25 0D 12 87 12
-88 C7 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CB 94 CC 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C C2 22 C2 30 CA 36 CD 82 CC 22 C2 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 CD 01 3A 30 12 6E CD 0D 12 87 12
-E6 C7 20 C4 0C C8 98 CD 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 C8 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CD BA 40 86 12 FC FF DF 3C 72 CA
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CD BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CD 06 43
-52 45 41 54 45 00 B0 12 8C CD BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CA 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 CE 05 44 45 46 45 52 B0 12 8C CD BA 40 30 40
-FC FF BA 40 2E CE FE FF A9 3C FE CD 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CD 86 5B
-54 48 45 4E 5D 00 30 4D 7E CE 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C2 01 00 20 C4 0C C8 78 CA
-3C C2 B0 C3 FE CE 82 C2 82 C2 88 C7 04 5B 49 46
-5D 00 54 CE BA C3 C0 CE 62 C7 2E C3 AC C3 F6 CE
-82 C2 82 C2 88 C7 06 5B 45 4C 53 45 5D 00 54 CE
-BA C3 E4 CE 62 C7 38 C3 3C C2 B0 C3 F6 CE 2E C3
-AC C3 F6 CE 88 C7 06 5B 54 48 45 4E 5D 00 54 CE
-BA C3 F6 CE 38 C3 4C C2 BA C3 9A CE 22 C2 62 C7
-88 C7 05 0D 0A 6B 6F 20 40 C7 D6 C5 86 CA AC C3
-9A CE 8A CE 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 CF 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C4 0C C8 6A C8 64 C2 5C C3 22 C2
-24 CF 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C4 0C C8 6A C8 64 C2 22 C2 5C CF 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CA 06 4D 41 52
-4B 45 52 00 B0 12 8C CD BA 40 84 12 FC FF BA 40
-5A CF FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 CC 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 C3 00 00
-2E 53 30 4D 32 CE 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC C3 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C7 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C CE 85 42 45 47 49 4E 30 40
-74 C5 E6 CF 85 55 4E 54 49 4C 39 40 B0 C3 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CC 85 41 47 41 49 4E 39 40 AC C3 EF 3F
-C8 CD 85 57 48 49 4C 45 0D 12 87 12 AC CF 70 C2
-22 C2 EC CC 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D0 EC CF 22 C2 C6 CF 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 C3 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C CF
-84 4C 4F 4F 50 00 39 40 E2 C3 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C5 85 2B 4C 4F 4F 50 39 40 D0 C3 E5 3F
-80 D0 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 C3
-00 00 BA 40 AC C3 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 D0
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D0 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 CE 2C C2 10 00 2C C2
-00 00 C0 C3 2C C2 00 00 30 CA E2 C3 44 D1 74 C5
-2C C2 CE 1D 3C C2 EA C2 30 CA F2 C2 1E CE 2C C2
-D0 1D F2 C2 22 C2 5E CC 05 46 4F 52 54 48 84 12
-5E D1 D2 DB 96 D4 48 DD 68 D1 7C D4 B4 D0 10 DD
-3C DC 5A DC 6C D2 1E DD 64 DC 00 00 C6 DB 8A CC
-50 DC 00 00 24 D0 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 CD 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 C7 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 D0 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E D1 CC D1 E0 D1 F0 D1
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D1 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D1 78 D4 D0 DD 44 D0 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D2 92 42 0C 18 34 D2 EF 3F
-24 D2 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 D2 92 42 CC 1D 34 D2 30 4D 38 D2 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 D1 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CE FF FA 23 B0 12 8A CB
-B2 40 D0 DD 0C 18 B2 40 78 D4 0E 18 CA 3F A8 CF
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C7 06 0D 1B 5B 37 6D 23 00 40 C7 5E C5 88 C7
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C7 2C C2 30 FF 74 C5 20 C3 26 C5 88 C7 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CB 86 D2 04 57
-41 52 4D 00 30 40 B8 D2 F8 CF 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 92 D3 30 01 B2 40 88 5A 5C 01
-B2 D0 EF 7F 06 02 B2 D0 00 04 04 02 B2 40 08 FF
-02 02 B2 D0 08 FF 06 02 B2 D0 F0 00 04 02 F2 40
-F0 00 22 03 F2 D0 F0 00 26 03 F2 D0 0F 00 24 03
-F2 40 A5 00 61 01 B2 40 86 00 62 01 82 43 66 01
-39 40 80 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
-9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
-18 83 FE 23 19 83 FA 23 B2 D2 B0 01 92 C3 B0 01
-F2 D0 10 00 2A 03 F2 C0 40 00 A1 04 3A 40 26 D3
-39 40 CE FF 89 4A 00 00 29 53 FC 23 92 42 02 18
-F0 FF B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00
-29 53 39 90 FF 1F FA 2B 31 40 E0 1C 3F 40 80 1C
-37 40 22 C2 36 40 B4 C2 35 40 00 C2 34 40 0C C2
-B2 40 0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42
-08 18 D2 B3 01 02 04 20 38 E3 18 53 82 48 08 18
-B2 40 81 00 C0 05 B2 40 0D 00 C6 05 B2 40 01 49
-C8 05 F2 D0 03 00 0D 02 92 C3 C0 05 92 D3 DA 05
-3D 40 46 D4 38 90 0A 00 29 27 38 90 16 00 26 2F
-28 93 FF 22 F4 26 14 D3 96 D1 09 41 53 53 45 4D
-42 4C 45 52 84 12 5E D1 A0 DA 0E DB 54 DA 78 DB
-1A DA A0 DB 1E D7 00 00 10 DA C4 DA 72 DA B2 DA
-2E D8 00 00 00 00 B0 DB 92 D1 B0 D2 85 48 49 32
-4C 4F 0D 12 87 12 74 C5 C0 CF 30 CA 82 CC 9C D1
-54 D4 22 C2 1A D3 04 43 4F 44 45 00 B0 12 8C CD
-A2 82 CC 1D 0D 12 87 12 7E CD AC C3 8E D4 00 00
-07 45 4E 44 43 4F 44 45 0D 12 87 12 B6 D1 36 CD
-22 C2 4A D4 03 41 53 4D 92 42 E0 1D C0 1D B2 40
-58 D4 E0 1D E3 3F B0 D4 06 45 4E 44 41 53 4D 00
-92 42 C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E
-1A 42 CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00
-A2 52 CC 1D B2 43 BE 1D 30 40 B6 D1 00 00 05 4C
-4F 32 48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40
-C6 1D 39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24
-7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D
-87 12 0C C8 6A C8 BA C3 52 D5 24 C9 B0 C3 70 CC
-74 D5 54 D5 29 4E 39 90 86 12 02 20 2E 53 30 41
-39 90 85 12 03 20 1E 4E 02 00 30 41 39 90 84 12
-01 20 2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12
-0C C8 24 C9 B0 C3 A4 D5 9A D5 21 53 3E 90 10 00
-BE 2D 30 41 A6 D5 B2 41 CA 1D 22 D3 30 41 0D 12
-87 12 20 C4 1E D5 B8 D5 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00
-34 20 92 53 CA 1D B0 12 40 D5 0E 93 04 20 B2 40
-00 03 C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D
-21 3C 2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92
-04 20 B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40
-30 02 C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D
-09 3C B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 C2 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC C4 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 C4 03 4B 45 59 30 40 B0 C5
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 C6 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 C6 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 C5 06 41 43 43 45 50 54 00
+3C 40 92 C6 3B 40 5C C6 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C6 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A C6 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C2 03 02 30 41 B2 40 13 00 CE 05 E2 D2 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C6 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 C6 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C C5 04 45 4D 49 54 00
+30 40 B4 C6 08 4E 3E 4F E0 3F AA C6 04 45 43 48
+4F 00 B2 40 82 48 80 C6 82 43 DE 1D 30 4D 5C C5
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C6 92 43
+DE 1D 30 4D 0E C5 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C6 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C7 EF 3F 10 C7
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C5 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C7 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C7 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C5 02 43
+52 00 30 40 56 C7 0D 12 87 12 64 C7 02 0D 0A 00
+24 C7 22 C2 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C7 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A C7 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA C6 82 53 22 00
+0D 12 87 12 2C C2 64 C7 0C CA 94 C7 2C C2 22 00
+E8 C7 82 C7 B6 C7 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 C6 82 2E
+22 00 0D 12 87 12 A0 C7 2C C2 24 C7 0C CA 22 C2
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C2 34 40
+0C C2 30 4D 8C C3 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 C9 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 C9 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C4 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C6 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C3 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A CA 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C C2 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C7 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 CA 20 C4 E8 C7 7E CA 3D 40
+86 CA E1 22 48 3E 88 CA 0A 4E 3E 4F 3D 40 9E CA
+37 27 3D 40 78 CA 1A E2 BE 1D B8 27 B2 23 A0 CA
+3E 4F 3D 40 78 CA BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CD CC 3F FA C9 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 CA DA CA B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 C3 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 C7 05 0D 0A 6F 6B 20 24 C7
+CE C5 EC C6 72 CA D6 C2 68 C3 64 C7 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CB 2C C2 30 FF
+74 C5 A4 C3 64 C7 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CB 38 C4 EA C2 B0 C3 06 CB 64 C7 05 0D
+0A 20 20 20 AC C3 0E CB E8 C5 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 D2 B0 D2 B2 40 4E C6
+4C C6 B2 40 B4 C6 B2 C6 B2 40 56 C7 54 C7 B2 40
+B0 C5 AE C5 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C6 B0 12
+72 CB A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
+03 02 92 C3 DC 05 38 40 F0 FF 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
+64 C7 04 1B 5B 37 6D 00 24 C7 2C C2 DE 1D EA C2
+4C C2 B0 C3 06 CC 64 C7 05 6C 69 6E 65 3A 24 C7
+38 C3 26 C5 C2 C6 24 C7 64 C7 04 1B 5B 30 6D 00
+24 C7 2A D2 82 C7 60 CB 5A CB 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C7 2C C2 9C CB 0C CA 22 C2
+40 C8 01 27 0D 12 87 12 20 C4 E8 C7 46 C8 B0 C3
+44 CC 22 C2 A8 CA 3E C4 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 CC 01 5D
+B2 43 BE 1D 30 4D 54 CC 83 5B 27 5D 0D 12 87 12
+34 CC 2C C2 2C C2 0C CA 0C CA 22 C2 BE 4F 02 00
+3E 4F 30 4D 6E C5 82 49 53 00 0D 12 87 12 38 C4
+EA C2 B0 C3 A0 CC 6C CC 2C C2 7C CC 0C CA 22 C2
+34 CC 7C CC 22 C2 86 CC 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C C7
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC CA 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C4 E8 C7 46 C8 4C C2
+B0 C3 44 CC 68 C3 B0 C3 06 CD 2C C2 2C C2 0C CA
+0C CA 2C C2 0C CA 0C CA 22 C2 82 9F BC 1D 40 25
+0D 12 87 12 64 C7 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CB 68 CC 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C C2 22 C2 0C CA 0A CD 56 CC
+22 C2 2A CD 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CD BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 CD 01 3A 30 12
+64 CD 0D 12 87 12 C2 C7 20 C4 E8 C7 8E CD 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CD 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 C7 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CD BA 40 86 12 FC FF DC 3C
+4E CA 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CD
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CD
+06 43 52 45 41 54 45 00 B0 12 82 CD BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CA 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A CE 05 44 45 46 45 52 B0 12 82 CD AC 3C
+A6 C8 05 3E 42 4F 44 59 2E 52 30 4D 00 CE 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CD
+86 5B 54 48 45 4E 5D 00 30 4D 80 CE 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C2 01 00 20 C4 E8 C7
+54 CA 3C C2 B0 C3 00 CF 82 C2 82 C2 64 C7 04 5B
+49 46 5D 00 56 CE BA C3 C2 CE 46 C7 2E C3 AC C3
+F8 CE 82 C2 82 C2 64 C7 06 5B 45 4C 53 45 5D 00
+56 CE BA C3 E6 CE 46 C7 38 C3 3C C2 B0 C3 F8 CE
+2E C3 AC C3 F8 CE 64 C7 06 5B 54 48 45 4E 5D 00
+56 CE BA C3 F8 CE 38 C3 4C C2 BA C3 9C CE 22 C2
+46 C7 64 C7 05 0D 0A 6B 6F 20 24 C7 CE C5 62 CA
+AC C3 9C CE 8C CE 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 CF 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C4 E8 C7 46 C8 64 C2 22 C2 26 CF
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 CF 5C C3 22 C2 58 CF 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CA 06 4D 41 52 4B 45 52 00
+B0 12 82 CD BA 40 84 12 FC FF BA 40 56 CF FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 CC 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 C3 00 00 2E 53 30 4D
+34 CE 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC C3 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C7 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E CE 85 42 45 47 49 4E 30 40 74 C5 E2 CF
+85 55 4E 54 49 4C 39 40 B0 C3 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CC
+85 41 47 41 49 4E 39 40 AC C3 EF 3F CA CD 85 57
+48 49 4C 45 0D 12 87 12 A8 CF 70 C2 22 C2 C0 CC
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D0 E8 CF
+22 C2 C2 CF 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 C3 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 CF 84 4C 4F 4F
+50 00 39 40 E2 C3 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C5
+85 2B 4C 4F 4F 50 39 40 D0 C3 E5 3F 7C D0 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 C3 00 00 BA 40
+AC C3 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE D0 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D0 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 CE 2C C2 10 00 2C C2 00 00 C0 C3
+2C C2 00 00 0C CA E2 C3 40 D1 74 C5 2C C2 C8 1D
+3C C2 EA C2 0C CA F2 C2 20 CE 2C C2 CA 1D F2 C2
+22 C2 32 CC 05 46 4F 52 54 48 84 12 5A D1 92 DB
+08 D5 08 DD 64 D1 64 D4 B0 D0 D0 DC FC DB 1A DC
+68 D2 DE DC 24 DC 00 00 86 DB 5E CC 10 DC 00 00
+20 D0 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA CC 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE C7 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 D0
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A D1 C8 D1 DC D1 EC D1 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D1
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D1 60 D4
+90 DD 40 D0 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D2 92 42 0C 18 30 D2 EF 3F 20 D2 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E D2 92 42
+C6 1D 30 D2 30 4D 34 D2 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 D1 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CB B2 40 90 DD 0C 18 B2 40
+60 D4 0E 18 CC 3F 82 D2 04 57 41 52 4D 00 30 40
+B2 D2 1E 42 08 18 0D 12 87 12 64 C7 06 0D 1B 5B
+37 6D 23 00 24 C7 5E C5 64 C7 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C7 2C C2 30 FF
+74 C5 20 C3 26 C5 64 C7 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CB F4 CF 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 92 D3 30 01 B2 40 88 5A 5C 01 B2 D0
+EF 7F 06 02 B2 D0 00 04 04 02 B2 40 08 FF 02 02
+B2 D0 08 FF 06 02 B2 D0 F0 00 04 02 F2 40 F0 00
+22 03 F2 D0 F0 00 26 03 F2 D0 0F 00 24 03 F2 40
+A5 00 61 01 B2 40 86 00 62 01 82 43 66 01 39 40
+80 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 D2 B0 01 92 C3 B0 01 F2 D0
+10 00 2A 03 F2 C0 40 00 A1 04 39 40 32 00 29 83
+B9 40 14 D3 CE FF FB 23 B2 40 54 C6 F0 FF B2 40
+18 00 0A 18 39 40 00 04 29 83 89 43 00 1C FC 23
+31 40 E0 1C 3F 40 80 1C 37 40 22 C2 36 40 B4 C2
+35 40 00 C2 34 40 0C C2 B2 40 0A 00 DC 1D B2 43
+B4 1D 92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20
+38 E3 18 53 82 48 08 18 B2 40 81 00 C0 05 92 42
+02 18 C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02
+92 C3 C0 05 92 D3 DA 05 3D 40 2E D4 38 90 0A 00
+33 27 38 90 16 00 30 2F 28 93 09 23 FE 26 AE D2
+92 D1 09 41 53 53 45 4D 42 4C 45 52 84 12 5A D1
+60 DA CE DA 14 DA 38 DB DA D9 60 DB F4 D6 00 00
+D0 D9 84 DA 32 DA 72 DA 04 D8 00 00 00 00 70 DB
+8E D1 A4 CF 85 48 49 32 4C 4F 0D 12 87 12 74 C5
+BC CF 0C CA 56 CC 98 D1 3C D4 22 C2 08 D3 04 43
+4F 44 45 00 B0 12 82 CD A2 82 C6 1D 0D 12 87 12
+74 CD AC C3 76 D4 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 B2 D1 0A CD 22 C2 32 D4 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 40 D4 DA 1D E3 3F 98 D4
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 B2 D1 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 7E D4 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 4C CD 56 CC 1A D5 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 E8 C7 46 C8 BA C3
+5A D5 00 C9 B0 C3 44 CC 7C D5 5C D5 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 46 D5 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 E8 C7 00 C9 B0 C3 B8 D5 AE D5 21 53
+3E 90 10 00 84 2D E2 2B BA D5 B2 41 C4 1D DE 3F
+0D 12 87 12 20 C4 24 D5 CA D5 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 46 D5 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
-08 20 B2 40 10 02 C4 1D 92 53 CA 1D B0 12 40 D5
-EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D
-92 53 CA 1D B0 12 86 D5 0E 20 B2 50 10 00 C4 1D
-3E 40 2B 00 B0 12 86 D5 33 24 92 92 C6 1D CA 1D
-02 24 92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12
-86 D5 F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12
-40 D5 B0 12 76 D5 E8 3F 0D 12 87 12 20 C4 1E D5
-B2 D6 FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50
-82 00 C4 1D C1 3F B0 12 86 D5 DE 23 B2 50 80 00
-C4 1D 3E 40 28 00 B0 12 40 D5 B0 12 76 D5 D4 23
-3D 40 70 CC 30 4D 4C C6 04 52 45 54 49 00 0D 12
-87 12 2C C2 00 13 30 CA 22 C2 2C C2 2C 00 AE D5
-A8 D6 04 D7 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F
-0E D5 03 4D 4F 56 84 12 FA D6 00 40 12 D7 05 4D
-4F 56 2E 42 84 12 FA D6 40 40 00 00 03 41 44 44
-84 12 FA D6 00 50 2C D7 05 41 44 44 2E 42 84 12
-FA D6 40 50 38 D7 04 41 44 44 43 00 84 12 FA D6
-00 60 46 D7 06 41 44 44 43 2E 42 00 84 12 FA D6
-40 60 E8 D6 04 53 55 42 43 00 84 12 FA D6 00 70
-64 D7 06 53 55 42 43 2E 42 00 84 12 FA D6 40 70
-72 D7 03 53 55 42 84 12 FA D6 00 80 82 D7 05 53
-55 42 2E 42 84 12 FA D6 40 80 EA D4 03 43 4D 50
-84 12 FA D6 00 90 9C D7 05 43 4D 50 2E 42 84 12
-FA D6 40 90 D8 D4 04 44 41 44 44 00 84 12 FA D6
-00 A0 B6 D7 06 44 41 44 44 2E 42 00 84 12 FA D6
-40 A0 A8 D7 03 42 49 54 84 12 FA D6 00 B0 D4 D7
-05 42 49 54 2E 42 84 12 FA D6 40 B0 E0 D7 03 42
-49 43 84 12 FA D6 00 C0 EE D7 05 42 49 43 2E 42
-84 12 FA D6 40 C0 FA D7 03 42 49 53 84 12 FA D6
-00 D0 08 D8 05 42 49 53 2E 42 84 12 FA D6 40 D0
-00 00 03 58 4F 52 84 12 FA D6 00 E0 22 D8 05 58
-4F 52 2E 42 84 12 FA D6 40 E0 54 D7 03 41 4E 44
-84 12 FA D6 00 F0 3C D8 05 41 4E 44 2E 42 84 12
-FA D6 40 F0 20 C4 AE D5 5A D8 1A 42 C4 1D B2 F0
-70 00 C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F
-8E D7 03 52 52 43 84 12 54 D8 00 10 72 D8 05 52
-52 43 2E 42 84 12 54 D8 40 10 7E D8 04 53 57 50
-42 00 84 12 54 D8 80 10 8C D8 03 52 52 41 84 12
-54 D8 00 11 9A D8 05 52 52 41 2E 42 84 12 54 D8
-40 11 A6 D8 03 53 58 54 84 12 54 D8 80 11 00 00
-04 50 55 53 48 00 84 12 54 D8 00 12 C0 D8 06 50
-55 53 48 2E 42 00 84 12 54 D8 40 12 14 D8 04 43
-41 4C 4C 00 84 12 54 D8 80 12 2C C2 2C 00 AE D5
-A8 D6 F4 D8 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D
-BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49
-3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12
-87 12 5E C5 88 C7 0D 6F 75 74 20 6F 66 20 62 6F
-75 6E 64 73 D4 CB CE D8 05 50 55 53 48 4D 84 12
-EA D8 00 15 38 D9 04 50 4F 50 4D 00 84 12 EA D8
-00 17 20 C4 1E D5 58 D9 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12
-0C C8 24 C9 B0 C3 70 CC A8 D6 7C D9 0A 4E 3E 4F
-1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F B4 D8 04 52
-52 43 4D 00 84 12 52 D9 50 00 8E D9 04 52 52 41
-4D 00 84 12 52 D9 50 01 9C D9 04 52 4C 41 4D 00
-84 12 52 D9 50 02 AA D9 04 52 52 55 4D 00 84 12
-52 D9 50 03 85 12 00 3C B8 D9 03 53 3E 3D 85 12
-00 38 CA D9 02 53 3C 00 85 12 00 34 46 D9 03 30
-3E 3D 85 12 00 30 DE D9 02 30 3C 00 85 12 00 30
-00 00 02 55 3C 00 85 12 00 2C F2 D9 03 55 3E 3D
-85 12 00 28 E8 D9 03 30 3C 3E 85 12 00 24 06 DA
-02 30 3D 00 85 12 00 20 58 C6 02 49 46 00 1A 42
-CC 1D 8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D FC D9
-04 54 48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48
-29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00
-30 4D C4 D7 04 45 4C 53 45 00 1A 42 CC 1D BA 40
-00 3C 00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F
-30 DA 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
-CC 1D 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0
-FF 03 08 DA 89 48 00 00 A2 53 CC 1D 30 4D 48 D8
-05 41 47 41 49 4E 0D 12 87 12 C4 D9 78 DA 22 C2
-00 00 05 57 48 49 4C 45 0D 12 87 12 1E DA 70 C2
-22 C2 D4 D9 06 52 45 50 45 41 54 00 0D 12 87 12
-C4 D9 78 DA 36 DA 22 C2 DA DA 3D 41 08 4E 3E 4F
-2A 48 0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43
-00 00 C3 3F DE D8 03 42 57 31 84 12 D8 DA 00 00
-F6 DA 03 42 57 32 84 12 D8 DA 00 00 02 DB 03 42
-57 33 84 12 D8 DA 00 00 1A DB 3D 41 1A 42 CC 1D
-28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A
-00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46
-57 31 84 12 18 DB 00 00 3E DB 03 46 57 32 84 12
-18 DB 00 00 4A DB 03 46 57 33 84 12 18 DB 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 46 D5 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 98 D5 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+98 D5 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 98 D5 FA 23 3C 50 10 00 B0 12
+80 D5 EF 3F 0D 12 87 12 20 C4 24 D5 9E D6 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 98 D5 E5 23 3C 50 80 00 B0 12 80 D5 E0 3F
+44 C6 04 52 45 54 49 00 0D 12 87 12 2C C2 00 13
+0C CA 22 C2 2C C2 2C 00 C0 D5 94 D6 DE D6 2E 4E
+0E DC 09 4B A5 3F F6 D4 03 4D 4F 56 84 12 D4 D6
+00 40 E8 D6 05 4D 4F 56 2E 42 84 12 D4 D6 40 40
+00 00 03 41 44 44 84 12 D4 D6 00 50 02 D7 05 41
+44 44 2E 42 84 12 D4 D6 40 50 0E D7 04 41 44 44
+43 00 84 12 D4 D6 00 60 1C D7 06 41 44 44 43 2E
+42 00 84 12 D4 D6 40 60 C2 D6 04 53 55 42 43 00
+84 12 D4 D6 00 70 3A D7 06 53 55 42 43 2E 42 00
+84 12 D4 D6 40 70 48 D7 03 53 55 42 84 12 D4 D6
+00 80 58 D7 05 53 55 42 2E 42 84 12 D4 D6 40 80
+D2 D4 03 43 4D 50 84 12 D4 D6 00 90 72 D7 05 43
+4D 50 2E 42 84 12 D4 D6 40 90 C0 D4 04 44 41 44
+44 00 84 12 D4 D6 00 A0 8C D7 06 44 41 44 44 2E
+42 00 84 12 D4 D6 40 A0 7E D7 03 42 49 54 84 12
+D4 D6 00 B0 AA D7 05 42 49 54 2E 42 84 12 D4 D6
+40 B0 B6 D7 03 42 49 43 84 12 D4 D6 00 C0 C4 D7
+05 42 49 43 2E 42 84 12 D4 D6 40 C0 D0 D7 03 42
+49 53 84 12 D4 D6 00 D0 DE D7 05 42 49 53 2E 42
+84 12 D4 D6 40 D0 00 00 03 58 4F 52 84 12 D4 D6
+00 E0 F8 D7 05 58 4F 52 2E 42 84 12 D4 D6 40 E0
+2A D7 03 41 4E 44 84 12 D4 D6 00 F0 12 D8 05 41
+4E 44 2E 42 84 12 D4 D6 40 F0 20 C4 C0 D5 30 D8
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+64 D7 03 52 52 43 84 12 2A D8 00 10 42 D8 05 52
+52 43 2E 42 84 12 2A D8 40 10 4E D8 04 53 57 50
+42 00 84 12 2A D8 80 10 5C D8 03 52 52 41 84 12
+2A D8 00 11 6A D8 05 52 52 41 2E 42 84 12 2A D8
+40 11 76 D8 03 53 58 54 84 12 2A D8 80 11 00 00
+04 50 55 53 48 00 84 12 2A D8 00 12 90 D8 06 50
+55 53 48 2E 42 00 84 12 2A D8 40 12 EA D7 04 43
+41 4C 4C 00 84 12 2A D8 80 12 1A 53 0E 4A 0D 12
+87 12 5E C5 64 C7 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 A8 CB 20 C4 24 D5 DC D8 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 E8 C7 00 C9 B0 C3 44 CC FC D8 1B 17 87 12
+94 D6 04 D9 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+84 D8 04 52 52 43 4D 00 84 12 D6 D8 50 00 32 D9
+04 52 52 41 4D 00 84 12 D6 D8 50 01 40 D9 04 52
+4C 41 4D 00 84 12 D6 D8 50 02 4E D9 04 52 52 55
+4D 00 84 12 D6 D8 50 03 9E D8 05 50 55 53 48 4D
+84 12 D6 D8 00 15 6A D9 04 50 4F 50 4D 00 84 12
+D6 D8 00 17 85 12 00 3C 5C D9 03 53 3E 3D 85 12
+00 38 8A D9 02 53 3C 00 85 12 00 34 78 D9 03 30
+3E 3D 85 12 00 30 9E D9 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C B2 D9 03 55 3E 3D
+85 12 00 28 A8 D9 03 30 3C 3E 85 12 00 24 C6 D9
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BC D9
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 9A D7 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+F0 D9 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1E D8
+05 41 47 41 49 4E 0D 12 87 12 84 D9 38 DA 22 C2
+00 00 05 57 48 49 4C 45 0D 12 87 12 DE D9 70 C2
+22 C2 94 D9 06 52 45 50 45 41 54 00 0D 12 87 12
+84 D9 38 DA F6 D9 22 C2 9A DA 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D AE D8 03 42 57 31 84 12 98 DA E2 1D
+B6 DA 03 42 57 32 84 12 98 DA E4 1D C2 DA 03 42
+57 33 84 12 98 DA E6 1D DA DA 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 D8 DA E8 1D FE DA 03 46 57 32 84 12
+D8 DA EA 1D 0A DB 03 46 57 33 84 12 D8 DA EC 1D
 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
-3E E0 00 08 30 4D 56 DB 04 47 4F 54 4F 00 0D 12
-87 12 C4 D9 60 CC 26 CA 22 C2 00 00 05 3F 47 4F
-54 4F 0D 12 87 12 60 DB 60 CC 26 CA 22 C2 00 00
-03 4A 4D 50 0D 12 87 12 60 CC A6 DA 22 C2 8C DB
-04 3F 4A 4D 50 00 0D 12 87 12 60 DB 60 CC 70 C2
-78 DA 22 C2 42 CF 07 7B 54 4F 4F 4C 53 7D 30 4D
-C4 D4 03 41 4E 44 3E FF 30 4D C6 D1 02 2E 53 00
+3E E0 00 08 30 4D 16 DB 04 47 4F 54 4F 00 0D 12
+87 12 84 D9 34 CC 02 CA 22 C2 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 20 DB 34 CC 02 CA 22 C2 00 00
+03 4A 4D 50 0D 12 87 12 34 CC 66 DA 22 C2 4C DB
+04 3F 4A 4D 50 00 0D 12 87 12 20 DB 34 CC 70 C2
+38 DA 22 C2 40 CF 07 7B 54 4F 4F 4C 53 7D 30 4D
+AC D4 03 41 4E 44 3E FF 30 4D C2 D1 02 2E 53 00
 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C
 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12
-87 12 2C C2 3C 00 D2 C6 5E C5 2C C2 08 00 D2 C6
-2C C2 3E 00 D2 C6 08 C7 82 C2 82 C2 8E C3 BA C3
-28 DC 5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5
-2C C2 02 00 D0 C3 2A DC 22 C2 DC DB 03 2E 52 53
-8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F CA C8
-01 3F 2E 4E 30 40 26 C5 52 D2 03 50 41 44 85 12
-E4 1C 0E D3 05 57 4F 52 44 53 0D 12 87 12 84 C7
-2C C2 03 00 1E C7 2C C2 D0 1D EA C2 5E DC 2C C2
-10 00 3C C2 18 C3 F6 D0 2C C2 00 00 3C C2 2C C2
+87 12 2C C2 3C 00 B0 C6 5E C5 2C C2 08 00 B0 C6
+2C C2 3E 00 B0 C6 EC C6 82 C2 82 C2 8E C3 BA C3
+E8 DB 5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5
+2C C2 02 00 D0 C3 EA DB 22 C2 9C DB 03 2E 52 53
+8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 CE
+01 3F 2E 4E 30 40 26 C5 4E D2 03 50 41 44 85 12
+E4 1C A8 D2 05 57 4F 52 44 53 0D 12 87 12 52 C7
+2C C2 03 00 02 C7 2C C2 CA 1D EA C2 1E DC 2C C2
+10 00 3C C2 18 C3 F2 D0 2C C2 00 00 3C C2 2C C2
 10 00 3C C2 18 C3 2C C2 00 00 C0 C3 3C C2 F8 C3
-5E DC 18 C3 EA C2 A4 C3 B0 C3 BA DC 5A C2 5A C2
-F8 C3 3C C2 5E DC 18 C3 EA C2 2C C2 02 00 D0 C3
-9C DC 4C C2 B0 C3 FC DC 3C C2 2C C2 02 00 20 C3
-EA C2 92 C2 5E DC 18 C3 F2 C2 3C C2 78 CA 2C C2
-7F 00 D6 DB 40 C7 00 C3 2C C2 0F 00 D6 DB 2C C2
-10 00 70 C2 20 C3 1E C7 AC C3 88 DC 5A C2 22 C2
-F0 D0 03 4D 41 58 2E 9F 07 38 2F 53 30 4D 02 DD
-03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D 04 D0 03 55
+1E DC 18 C3 EA C2 A4 C3 B0 C3 7A DC 5A C2 5A C2
+F8 C3 3C C2 1E DC 18 C3 EA C2 2C C2 02 00 D0 C3
+5C DC 4C C2 B0 C3 BC DC 3C C2 2C C2 02 00 20 C3
+EA C2 92 C2 1E DC 18 C3 F2 C2 3C C2 54 CA 2C C2
+7F 00 96 DB 24 C7 00 C3 2C C2 0F 00 96 DB 2C C2
+10 00 70 C2 20 C3 02 C7 AC C3 48 DC 5A C2 22 C2
+EC D0 03 4D 41 58 2E 9F 07 38 2F 53 30 4D C2 DC
+03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D0 03 55
 2E 52 0D 12 87 12 A8 C2 42 C4 2C C2 00 00 A2 C4
-D4 C4 F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 06 DD
-1E C7 40 C7 22 C2 D4 D1 04 44 55 4D 50 00 0D 12
-12 12 E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 C2
+D4 C4 F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 C6 DC
+02 C7 24 C7 22 C2 D0 D1 04 44 55 4D 50 00 0D 12
+12 12 DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 C2
 82 C2 82 C2 26 C5 2C C2 01 00 20 C3 26 C5 2C C2
-FE FF D6 DB C0 C3 84 C7 F8 C3 2C C2 07 00 22 DD
-08 C7 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3
-00 C3 2C C2 03 00 22 DD E2 C3 8E DD 08 C7 08 C7
+FE FF 96 DB C0 C3 52 C7 F8 C3 2C C2 07 00 E2 DC
+EC C6 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3
+00 C3 2C C2 03 00 E2 DC E2 C3 4E DD EC C6 EC C6
 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3 00 C3
-2C C2 7E 00 14 DD 20 C4 06 DD D2 C6 E2 C3 AC DD
-2C C2 10 00 D0 C3 76 DD B4 C2 2C C4 F2 C2 22 C2
+2C C2 7E 00 D4 DC 20 C4 C6 DC B0 C6 E2 C3 6C DD
+2C C2 10 00 D0 C3 36 DD B4 C2 2C C4 F2 C2 22 C2
 @FFFE
-26 D3
+14 D3
 q
index 7b0f67e..8b10fde 100644 (file)
@@ -1,6 +1,6 @@
 @1800
-10 00 60 C6 C0 5D 60 EA 05 00 18 00 C0 DD 68 D4
-2C C6 38 C6 00 00 00 00
+10 00 04 00 00 00 C0 5D 05 00 18 00 90 DD 60 D4
+24 C6 36 C6 00 00 00 00 00 00
 @C200
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +36,7 @@ F9 3F 64 C3 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C3 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C3 02 42 4C 00
-85 12 20 00 1C C4 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C C4 04 42 41 53 45 00 85 12 DC 1D
 C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA C3 06 55 4D 2F
 4D 4F 44 00 30 12 5A C2 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +44,7 @@ C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C2 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C4
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 C4
 02 23 53 00 0D 12 87 12 A2 C4 DC C4 2D 83 09 93
@@ -53,399 +53,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C4 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C4 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C4 02 55 2E 00 0D 12 87 12 42 C4 2C C2 00 00
-D4 C4 F0 C4 34 C7 FC C6 22 C2 3E C3 02 44 2E 00
+D4 C4 F0 C4 24 C7 EC C6 22 C2 3E C3 02 44 2E 00
 0D 12 87 12 42 C4 70 C2 82 C2 44 C3 D4 C4 92 C2
-14 C5 F0 C4 34 C7 FC C6 22 C2 7C C2 01 2E 0E 93
+14 C5 F0 C4 24 C7 EC C6 22 C2 7C C2 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C5 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 C2 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC C4 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E C5 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C C6 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 38 C6 30 4D 08 C4 03 4B
-45 59 30 40 AE C5 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 C5
-06 41 43 43 45 50 54 00 3C 40 98 C6 3B 40 68 C6
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C C6 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 4C C6 4D 15 B2 40 11 00
-CE 05 E2 C2 03 02 30 41 B2 40 13 00 CE 05 E2 D2
-03 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A C6
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 CE 05 30 4D 8E C6 2D 83
-92 B3 DC 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 1D 02 24 92 53 E4 1D 3E 8F 3D 41 30 4D A8 C5
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C C5
-04 45 4D 49 54 00 30 40 B8 C6 C0 C6 04 45 43 48
-4F 00 B2 40 82 48 86 C6 82 43 E4 1D 30 4D 5C C5
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 C6 92 43
-E4 1D 30 4D 0E C5 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 C6 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E C7 EF 3F 20 C7
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 C2 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC C4 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 C4 03 4B 45 59 30 40 B0 C5
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 C6 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 C6 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 C5 06 41 43 43 45 50 54 00
+3C 40 92 C6 3B 40 5C C6 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C6 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A C6 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C2 03 02 30 41 B2 40 13 00 CE 05 E2 D2 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C6 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 C6 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C C5 04 45 4D 49 54 00
+30 40 B4 C6 08 4E 3E 4F E0 3F AA C6 04 45 43 48
+4F 00 B2 40 82 48 80 C6 82 43 DE 1D 30 4D 5C C5
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C6 92 43
+DE 1D 30 4D 0E C5 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C6 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C7 EF 3F 10 C7
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C5 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A C7 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C C7 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 C6 04 28
-43 52 29 00 0D 12 87 12 7C C7 02 0D 0A 00 34 C7
-22 C2 92 C5 02 43 52 00 30 40 64 C7 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 C7 07 43 41 50 53 5F 4F 4E B2 43 B4 1D 30 4D
-92 C7 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 1D
-30 4D 0A C7 82 53 22 00 0D 12 87 12 2C C2 7C C7
-24 CA AC C7 2C C2 22 00 00 C8 9A C7 CE C7 3D 41
-6E 4E 1E 83 82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63
-CC 1D 30 4D E0 C6 82 2E 22 00 0D 12 87 12 B8 C7
-2C C2 34 C7 24 CA 22 C2 00 00 04 57 4F 52 44 00
-3C 40 C6 1D 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 1D F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 1D 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 C2 34 40 0C C2 30 4D 8C C3 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 1D 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 1D 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 C9 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A C9 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 C4
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 1D 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC C6 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E C3 01 2C 1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00
-3E 4F 30 4D 22 CA 87 4C 49 54 45 52 41 4C 82 93
-BE 1D 0F 24 1A 42 CC 1D A2 52 CC 1D BA 40 2C C2
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 C7 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 1D 82 4E
-C6 1D B2 4F C8 1D 3E 4F 30 4D 0D 12 87 12 7A CA
-20 C4 00 C8 96 CA 3D 40 9E CA E1 22 44 3E A0 CA
-0A 4E 3E 4F 3D 40 B6 CA 37 27 3D 40 90 CA 1A E2
-BE 1D B8 27 B2 23 B8 CA 3E 4F 3D 40 90 CA BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 CD CC 3F 12 CA 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 1D 3C 49 3B 49 3A 49 3D 15 87 12 8A CA
-F2 CA B2 41 CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41
-30 4D 94 C3 04 51 55 49 54 00 31 40 E0 1C B2 40
-00 1C 00 1C 82 43 BE 1D 82 43 08 18 87 12 7C C7
-05 0D 0A 6F 6B 20 34 C7 D6 C5 FC C6 8A CA D6 C2
-68 C3 7C C7 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC CB 2C C2 30 FF 74 C5 A4 C3 7C C7 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC CB 38 C4 EA C2
-B0 C3 1E CB 7C C7 05 0D 0A 20 20 20 AC C3 26 CB
-F0 C5 05 41 42 4F 52 54 3F 40 80 1C C6 3F B2 40
-AC D2 0A D3 B2 40 5A C6 4E C6 B2 40 B8 C6 C8 C6
-B2 40 64 C7 7A C7 B2 40 AE C5 D4 C5 82 43 EE DA
-82 43 FA DA 82 43 06 DB 82 43 36 DB 82 43 42 DB
-82 43 4E DB B2 40 0A 00 E2 1D 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 C6 B0 12
-8A CB A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C7 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C7 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C5 02 43
+52 00 30 40 56 C7 0D 12 87 12 64 C7 02 0D 0A 00
+24 C7 22 C2 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C7 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A C7 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA C6 82 53 22 00
+0D 12 87 12 2C C2 64 C7 0C CA 94 C7 2C C2 22 00
+E8 C7 82 C7 B6 C7 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 C6 82 2E
+22 00 0D 12 87 12 A0 C7 2C C2 24 C7 0C CA 22 C2
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C2 34 40
+0C C2 30 4D 8C C3 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 C9 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 C9 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C4 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C6 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C3 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A CA 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C C2 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C7 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 CA 20 C4 E8 C7 7E CA 3D 40
+86 CA E1 22 48 3E 88 CA 0A 4E 3E 4F 3D 40 9E CA
+37 27 3D 40 78 CA 1A E2 BE 1D B8 27 B2 23 A0 CA
+3E 4F 3D 40 78 CA BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CD CC 3F FA C9 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 CA DA CA B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 C3 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 C7 05 0D 0A 6F 6B 20 24 C7
+CE C5 EC C6 72 CA D6 C2 68 C3 64 C7 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CB 2C C2 30 FF
+74 C5 A4 C3 64 C7 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CB 38 C4 EA C2 B0 C3 06 CB 64 C7 05 0D
+0A 20 20 20 AC C3 0E CB E8 C5 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 D2 B0 D2 B2 40 4E C6
+4C C6 B2 40 B4 C6 B2 C6 B2 40 56 C7 54 C7 B2 40
+B0 C5 AE C5 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C6 B0 12
+72 CB A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
 03 02 92 C3 DC 05 38 40 F0 FF 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
-7C C7 04 1B 5B 37 6D 00 34 C7 2C C2 E4 1D EA C2
-4C C2 B0 C3 26 CC 7C C7 05 6C 69 6E 65 3A 34 C7
-38 C3 26 C5 D2 C6 34 C7 7C C7 04 1B 5B 30 6D 00
-34 C7 22 D2 9A C7 78 CB 72 CB 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 C7 2C C2 BC CB 24 CA 22 C2
-58 C8 01 27 0D 12 87 12 20 C4 00 C8 5E C8 B0 C3
-64 CC 22 C2 C0 CA 3E C4 81 5C 92 42 C6 1D CA 1D
-30 4D 00 00 81 5B 82 43 BE 1D 30 4D 68 CC 01 5D
-B2 43 BE 1D 30 4D 74 CC 83 5B 27 5D 0D 12 87 12
-54 CC 2C C2 2C C2 24 CA 24 CA 22 C2 BE 4F 02 00
-3E 4F 30 4D 5E C7 82 49 53 00 0D 12 87 12 38 C4
-EA C2 B0 C3 C0 CC 8C CC 2C C2 9C CC 24 CA 22 C2
-54 CC 9C CC 22 C2 A6 CC 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D B4 C7
-87 52 45 43 55 52 53 45 19 42 CC 1D 99 42 BA 1D
-00 00 A2 53 CC 1D 30 4D 04 CB 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 C4 00 C8 5E C8 4C C2
-B0 C3 64 CC 68 C3 B0 C3 26 CD 2C C2 2C C2 24 CA
-24 CA 2C C2 24 CA 24 CA 22 C2 82 9F BC 1D 2C 25
-0D 12 87 12 7C C7 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 CB 88 CC 81 3B 82 93 BE 1D
-8C 27 0D 12 87 12 2C C2 22 C2 24 CA 2A CD 76 CC
-22 C2 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 1D 82 4F BC 1D 30 4D 4A CD 01 3A 30 12 62 CD
-0D 12 87 12 DA C7 20 C4 00 C8 8C CD 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 1D 82 49 B8 1D 82 4A
-BA 1D 2A 52 82 4A CC 1D 30 41 FA C7 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 CD BA 40 86 12 FC FF
-DF 3C 66 CA 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 CD BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 CD 06 43 52 45 41 54 45 00 B0 12 80 CD BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 CA 05 44 4F 45
-53 3E 1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C CE 05 44 45 46 45 52 B0 12 80 CD
-BA 40 30 40 FC FF BA 40 22 CE FE FF A9 3C F2 CD
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A CD 86 5B 54 48 45 4E 5D 00 30 4D 72 CE 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C C2 01 00 20 C4
-00 C8 6C CA 3C C2 B0 C3 F2 CE 82 C2 82 C2 7C C7
-04 5B 49 46 5D 00 48 CE BA C3 B4 CE 56 C7 2E C3
-AC C3 EA CE 82 C2 82 C2 7C C7 06 5B 45 4C 53 45
-5D 00 48 CE BA C3 D8 CE 56 C7 38 C3 3C C2 B0 C3
-EA CE 2E C3 AC C3 EA CE 7C C7 06 5B 54 48 45 4E
-5D 00 48 CE BA C3 EA CE 38 C3 4C C2 BA C3 8E CE
-22 C2 56 C7 7C C7 05 0D 0A 6B 6F 20 34 C7 D6 C5
-7A CA AC C3 8E CE 7E CE 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 CF 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 C4 00 C8 5E C8 64 C2
-5C C3 22 C2 18 CF 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C4 00 C8 5E C8 64 C2 22 C2 50 CF
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 CA
-06 4D 41 52 4B 45 52 00 B0 12 80 CD BA 40 84 12
-FC FF BA 40 4E CF FE FF 9A 42 CE 1D 00 00 28 83
-8A 48 02 00 A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D
-A8 49 FE FF 89 48 00 00 30 4D C8 CC 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 1D A2 52 CC 1D BE 40
-B0 C3 00 00 2E 53 30 4D 26 CE 84 45 4C 53 45 00
-A2 52 CC 1D 1A 42 CC 1D BA 40 AC C3 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E C7 84 54 48 45 4E 00
-9E 42 CC 1D 00 00 3E 4F 30 4D 40 CE 85 42 45 47
-49 4E 30 40 74 C5 DA CF 85 55 4E 54 49 4C 39 40
-B0 C3 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A CC 85 41 47 41 49 4E 39 40
-AC C3 EF 3F BC CD 85 57 48 49 4C 45 0D 12 87 12
-A0 CF 70 C2 22 C2 E0 CC 86 52 45 50 45 41 54 00
-0D 12 87 12 1E D0 E0 CF 22 C2 BA CF 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42 CC 1D BE 40
-C0 C3 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
-30 4D 60 CF 84 4C 4F 4F 50 00 39 40 E2 C3 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42
-00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE C5 85 2B 4C 4F 4F 50 39 40
-D0 C3 E5 3F 74 D0 85 4C 45 41 56 45 1A 42 CC 1D
-BA 40 F2 C3 00 00 BA 40 AC C3 02 00 B2 50 06 00
-CC 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
-30 4D B6 D0 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 D0 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA CD 2C C2
-10 00 2C C2 00 00 C0 C3 2C C2 00 00 24 CA E2 C3
-38 D1 74 C5 2C C2 CE 1D 3C C2 EA C2 24 CA F2 C2
-12 CE 2C C2 D0 1D F2 C2 22 C2 52 CC 05 46 4F 52
-54 48 84 12 52 D1 C2 DB 86 D4 38 DD 5C D1 6C D4
-A8 D0 00 DD 2C DC 4A DC 60 D2 0E DD 54 DC 00 00
-B6 DB 7E CC 40 DC 00 00 18 D0 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 1D 38 40 D2 1D B5 3F FA CC
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 1D 38 40 D0 1D A2 3F E6 C7 04 4F 4E 4C 59 00
-82 43 D2 1D 30 4D 4C D0 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 1D E0 1D 30 4D 62 D1 C0 D1
-D4 D1 E4 D1 3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 D1 09 50 57 52 5F 53 54 41
-54 45 84 12 DC D1 68 D4 C0 DD 38 D0 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 D2 92 42 0C 18
-28 D2 EF 3F 18 D2 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 1D 26 D2 92 42 CC 1D 28 D2 30 4D 2C D2
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 1D 0E 18
-92 42 CC 1D 0C 18 EC 3F 1C D1 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 CE FF FA 23
-B0 12 7E CB B2 40 C0 DD 0C 18 B2 40 68 D4 0E 18
-CA 3F 9C CF 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C C7 06 0D 1B 5B 37 6D 23 00 34 C7
-5E C5 7C C7 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 C7 2C C2 30 FF 74 C5 20 C3 26 C5
-7C C7 0B 62 79 74 65 73 20 66 72 65 65 20 CE CB
-7A D2 04 57 41 52 4D 00 30 40 AC D2 EC CF 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 92 D3 30 01 B2 40
-88 5A 5C 01 B2 D0 EF 7F 06 02 B2 D0 00 04 04 02
-B2 40 08 FF 02 02 B2 D0 08 FF 06 02 B2 D0 F0 00
-04 02 F2 40 F0 00 22 03 F2 D0 F0 00 26 03 F2 D0
-0F 00 24 03 F2 40 A5 00 61 01 B2 40 86 00 62 01
-82 43 66 01 39 40 80 01 B2 40 33 00 64 01 D2 43
-61 01 92 D2 9E 01 08 18 A2 93 08 18 01 24 59 07
-38 40 59 14 18 83 FE 23 19 83 FA 23 B2 D2 B0 01
-92 C3 B0 01 F2 D0 10 00 2A 03 F2 C0 40 00 A1 04
-3A 40 1A D3 39 40 CE FF 89 4A 00 00 29 53 FC 23
-92 42 02 18 F0 FF B2 40 18 00 0A 18 39 40 00 1C
-89 43 00 00 29 53 39 90 FF 1F FA 2B 31 40 E0 1C
-3F 40 80 1C 37 40 22 C2 36 40 B4 C2 35 40 00 C2
-34 40 0C C2 B2 40 0A 00 E2 1D B2 43 B4 1D 92 C3
-30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3 18 53
-82 48 08 18 B2 40 81 00 C0 05 A2 42 C6 05 82 43
-C8 05 F2 D0 03 00 0D 02 92 C3 C0 05 92 D3 DA 05
-3D 40 36 D4 38 90 0A 00 2B 27 38 90 16 00 28 2F
-28 93 01 23 F6 26 08 D3 8A D1 09 41 53 53 45 4D
-42 4C 45 52 84 12 52 D1 90 DA FE DA 44 DA 68 DB
-0A DA 90 DB 0E D7 00 00 00 DA B4 DA 62 DA A2 DA
-1E D8 00 00 00 00 A0 DB 86 D1 A4 D2 85 48 49 32
-4C 4F 0D 12 87 12 74 C5 B4 CF 24 CA 76 CC 90 D1
-44 D4 22 C2 0E D3 04 43 4F 44 45 00 B0 12 80 CD
-A2 82 CC 1D 0D 12 87 12 72 CD AC C3 7E D4 00 00
-07 45 4E 44 43 4F 44 45 0D 12 87 12 AA D1 2A CD
-22 C2 3A D4 03 41 53 4D 92 42 E0 1D C0 1D B2 40
-48 D4 E0 1D E3 3F A0 D4 06 45 4E 44 41 53 4D 00
-92 42 C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E
-1A 42 CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00
-A2 52 CC 1D B2 43 BE 1D 30 40 AA D1 00 00 05 4C
-4F 32 48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40
-C6 1D 39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24
-7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D
-87 12 00 C8 5E C8 BA C3 42 D5 18 C9 B0 C3 64 CC
-64 D5 44 D5 29 4E 39 90 86 12 02 20 2E 53 30 41
-39 90 85 12 03 20 1E 4E 02 00 30 41 39 90 84 12
-01 20 2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12
-00 C8 18 C9 B0 C3 94 D5 8A D5 21 53 3E 90 10 00
-BE 2D 30 41 96 D5 B2 41 CA 1D 22 D3 30 41 0D 12
-87 12 20 C4 0E D5 A8 D5 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00
-34 20 92 53 CA 1D B0 12 30 D5 0E 93 04 20 B2 40
-00 03 C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D
-21 3C 2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92
-04 20 B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40
-30 02 C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D
-09 3C B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D
+64 C7 04 1B 5B 37 6D 00 24 C7 2C C2 DE 1D EA C2
+4C C2 B0 C3 06 CC 64 C7 05 6C 69 6E 65 3A 24 C7
+38 C3 26 C5 C2 C6 24 C7 64 C7 04 1B 5B 30 6D 00
+24 C7 2A D2 82 C7 60 CB 5A CB 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C7 2C C2 9C CB 0C CA 22 C2
+40 C8 01 27 0D 12 87 12 20 C4 E8 C7 46 C8 B0 C3
+44 CC 22 C2 A8 CA 3E C4 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 CC 01 5D
+B2 43 BE 1D 30 4D 54 CC 83 5B 27 5D 0D 12 87 12
+34 CC 2C C2 2C C2 0C CA 0C CA 22 C2 BE 4F 02 00
+3E 4F 30 4D 6E C5 82 49 53 00 0D 12 87 12 38 C4
+EA C2 B0 C3 A0 CC 6C CC 2C C2 7C CC 0C CA 22 C2
+34 CC 7C CC 22 C2 86 CC 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C C7
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC CA 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C4 E8 C7 46 C8 4C C2
+B0 C3 44 CC 68 C3 B0 C3 06 CD 2C C2 2C C2 0C CA
+0C CA 2C C2 0C CA 0C CA 22 C2 82 9F BC 1D 40 25
+0D 12 87 12 64 C7 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CB 68 CC 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C C2 22 C2 0C CA 0A CD 56 CC
+22 C2 2A CD 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CD BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 CD 01 3A 30 12
+64 CD 0D 12 87 12 C2 C7 20 C4 E8 C7 8E CD 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CD 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 C7 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CD BA 40 86 12 FC FF DC 3C
+4E CA 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CD
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CD
+06 43 52 45 41 54 45 00 B0 12 82 CD BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CA 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A CE 05 44 45 46 45 52 B0 12 82 CD AC 3C
+A6 C8 05 3E 42 4F 44 59 2E 52 30 4D 00 CE 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CD
+86 5B 54 48 45 4E 5D 00 30 4D 80 CE 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C2 01 00 20 C4 E8 C7
+54 CA 3C C2 B0 C3 00 CF 82 C2 82 C2 64 C7 04 5B
+49 46 5D 00 56 CE BA C3 C2 CE 46 C7 2E C3 AC C3
+F8 CE 82 C2 82 C2 64 C7 06 5B 45 4C 53 45 5D 00
+56 CE BA C3 E6 CE 46 C7 38 C3 3C C2 B0 C3 F8 CE
+2E C3 AC C3 F8 CE 64 C7 06 5B 54 48 45 4E 5D 00
+56 CE BA C3 F8 CE 38 C3 4C C2 BA C3 9C CE 22 C2
+46 C7 64 C7 05 0D 0A 6B 6F 20 24 C7 CE C5 62 CA
+AC C3 9C CE 8C CE 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 CF 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C4 E8 C7 46 C8 64 C2 22 C2 26 CF
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 CF 5C C3 22 C2 58 CF 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CA 06 4D 41 52 4B 45 52 00
+B0 12 82 CD BA 40 84 12 FC FF BA 40 56 CF FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 CC 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 C3 00 00 2E 53 30 4D
+34 CE 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC C3 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C7 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E CE 85 42 45 47 49 4E 30 40 74 C5 E2 CF
+85 55 4E 54 49 4C 39 40 B0 C3 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CC
+85 41 47 41 49 4E 39 40 AC C3 EF 3F CA CD 85 57
+48 49 4C 45 0D 12 87 12 A8 CF 70 C2 22 C2 C0 CC
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D0 E8 CF
+22 C2 C2 CF 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 C3 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 CF 84 4C 4F 4F
+50 00 39 40 E2 C3 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C5
+85 2B 4C 4F 4F 50 39 40 D0 C3 E5 3F 7C D0 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 C3 00 00 BA 40
+AC C3 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE D0 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D0 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 CE 2C C2 10 00 2C C2 00 00 C0 C3
+2C C2 00 00 0C CA E2 C3 40 D1 74 C5 2C C2 C8 1D
+3C C2 EA C2 0C CA F2 C2 20 CE 2C C2 CA 1D F2 C2
+22 C2 32 CC 05 46 4F 52 54 48 84 12 5A D1 92 DB
+08 D5 08 DD 64 D1 64 D4 B0 D0 D0 DC FC DB 1A DC
+68 D2 DE DC 24 DC 00 00 86 DB 5E CC 10 DC 00 00
+20 D0 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA CC 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE C7 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 D0
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A D1 C8 D1 DC D1 EC D1 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D1
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D1 60 D4
+90 DD 40 D0 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D2 92 42 0C 18 30 D2 EF 3F 20 D2 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E D2 92 42
+C6 1D 30 D2 30 4D 34 D2 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 D1 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CB B2 40 90 DD 0C 18 B2 40
+60 D4 0E 18 CC 3F 82 D2 04 57 41 52 4D 00 30 40
+B2 D2 1E 42 08 18 0D 12 87 12 64 C7 06 0D 1B 5B
+37 6D 23 00 24 C7 5E C5 64 C7 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C7 2C C2 30 FF
+74 C5 20 C3 26 C5 64 C7 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CB F4 CF 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 92 D3 30 01 B2 40 88 5A 5C 01 B2 D0
+EF 7F 06 02 B2 D0 00 04 04 02 B2 40 08 FF 02 02
+B2 D0 08 FF 06 02 B2 D0 F0 00 04 02 F2 40 F0 00
+22 03 F2 D0 F0 00 26 03 F2 D0 0F 00 24 03 F2 40
+A5 00 61 01 B2 40 86 00 62 01 82 43 66 01 39 40
+80 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 D2 B0 01 92 C3 B0 01 F2 D0
+10 00 2A 03 F2 C0 40 00 A1 04 39 40 32 00 29 83
+B9 40 14 D3 CE FF FB 23 B2 40 54 C6 F0 FF B2 40
+18 00 0A 18 39 40 00 04 29 83 89 43 00 1C FC 23
+31 40 E0 1C 3F 40 80 1C 37 40 22 C2 36 40 B4 C2
+35 40 00 C2 34 40 0C C2 B2 40 0A 00 DC 1D B2 43
+B4 1D 92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20
+38 E3 18 53 82 48 08 18 B2 40 81 00 C0 05 92 42
+02 18 C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02
+92 C3 C0 05 92 D3 DA 05 3D 40 2E D4 38 90 0A 00
+33 27 38 90 16 00 30 2F 28 93 09 23 FE 26 AE D2
+92 D1 09 41 53 53 45 4D 42 4C 45 52 84 12 5A D1
+60 DA CE DA 14 DA 38 DB DA D9 60 DB F4 D6 00 00
+D0 D9 84 DA 32 DA 72 DA 04 D8 00 00 00 00 70 DB
+8E D1 A4 CF 85 48 49 32 4C 4F 0D 12 87 12 74 C5
+BC CF 0C CA 56 CC 98 D1 3C D4 22 C2 08 D3 04 43
+4F 44 45 00 B0 12 82 CD A2 82 C6 1D 0D 12 87 12
+74 CD AC C3 76 D4 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 B2 D1 0A CD 22 C2 32 D4 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 40 D4 DA 1D E3 3F 98 D4
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 B2 D1 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 7E D4 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 4C CD 56 CC 1A D5 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 E8 C7 46 C8 BA C3
+5A D5 00 C9 B0 C3 44 CC 7C D5 5C D5 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 46 D5 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 E8 C7 00 C9 B0 C3 B8 D5 AE D5 21 53
+3E 90 10 00 84 2D E2 2B BA D5 B2 41 C4 1D DE 3F
+0D 12 87 12 20 C4 24 D5 CA D5 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 46 D5 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
-08 20 B2 40 10 02 C4 1D 92 53 CA 1D B0 12 30 D5
-EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D
-92 53 CA 1D B0 12 76 D5 0E 20 B2 50 10 00 C4 1D
-3E 40 2B 00 B0 12 76 D5 33 24 92 92 C6 1D CA 1D
-02 24 92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12
-76 D5 F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12
-30 D5 B0 12 66 D5 E8 3F 0D 12 87 12 20 C4 0E D5
-A2 D6 FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50
-82 00 C4 1D C1 3F B0 12 76 D5 DE 23 B2 50 80 00
-C4 1D 3E 40 28 00 B0 12 30 D5 B0 12 66 D5 D4 23
-3D 40 64 CC 30 4D 46 C6 04 52 45 54 49 00 0D 12
-87 12 2C C2 00 13 24 CA 22 C2 2C C2 2C 00 9E D5
-98 D6 F4 D6 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F
-FE D4 03 4D 4F 56 84 12 EA D6 00 40 02 D7 05 4D
-4F 56 2E 42 84 12 EA D6 40 40 00 00 03 41 44 44
-84 12 EA D6 00 50 1C D7 05 41 44 44 2E 42 84 12
-EA D6 40 50 28 D7 04 41 44 44 43 00 84 12 EA D6
-00 60 36 D7 06 41 44 44 43 2E 42 00 84 12 EA D6
-40 60 D8 D6 04 53 55 42 43 00 84 12 EA D6 00 70
-54 D7 06 53 55 42 43 2E 42 00 84 12 EA D6 40 70
-62 D7 03 53 55 42 84 12 EA D6 00 80 72 D7 05 53
-55 42 2E 42 84 12 EA D6 40 80 DA D4 03 43 4D 50
-84 12 EA D6 00 90 8C D7 05 43 4D 50 2E 42 84 12
-EA D6 40 90 C8 D4 04 44 41 44 44 00 84 12 EA D6
-00 A0 A6 D7 06 44 41 44 44 2E 42 00 84 12 EA D6
-40 A0 98 D7 03 42 49 54 84 12 EA D6 00 B0 C4 D7
-05 42 49 54 2E 42 84 12 EA D6 40 B0 D0 D7 03 42
-49 43 84 12 EA D6 00 C0 DE D7 05 42 49 43 2E 42
-84 12 EA D6 40 C0 EA D7 03 42 49 53 84 12 EA D6
-00 D0 F8 D7 05 42 49 53 2E 42 84 12 EA D6 40 D0
-00 00 03 58 4F 52 84 12 EA D6 00 E0 12 D8 05 58
-4F 52 2E 42 84 12 EA D6 40 E0 44 D7 03 41 4E 44
-84 12 EA D6 00 F0 2C D8 05 41 4E 44 2E 42 84 12
-EA D6 40 F0 20 C4 9E D5 4A D8 1A 42 C4 1D B2 F0
-70 00 C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F
-7E D7 03 52 52 43 84 12 44 D8 00 10 62 D8 05 52
-52 43 2E 42 84 12 44 D8 40 10 6E D8 04 53 57 50
-42 00 84 12 44 D8 80 10 7C D8 03 52 52 41 84 12
-44 D8 00 11 8A D8 05 52 52 41 2E 42 84 12 44 D8
-40 11 96 D8 03 53 58 54 84 12 44 D8 80 11 00 00
-04 50 55 53 48 00 84 12 44 D8 00 12 B0 D8 06 50
-55 53 48 2E 42 00 84 12 44 D8 40 12 04 D8 04 43
-41 4C 4C 00 84 12 44 D8 80 12 2C C2 2C 00 9E D5
-98 D6 E4 D8 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D
-BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49
-3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12
-87 12 5E C5 7C C7 0D 6F 75 74 20 6F 66 20 62 6F
-75 6E 64 73 C8 CB BE D8 05 50 55 53 48 4D 84 12
-DA D8 00 15 28 D9 04 50 4F 50 4D 00 84 12 DA D8
-00 17 20 C4 0E D5 48 D9 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12
-00 C8 18 C9 B0 C3 64 CC 98 D6 6C D9 0A 4E 3E 4F
-1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F A4 D8 04 52
-52 43 4D 00 84 12 42 D9 50 00 7E D9 04 52 52 41
-4D 00 84 12 42 D9 50 01 8C D9 04 52 4C 41 4D 00
-84 12 42 D9 50 02 9A D9 04 52 52 55 4D 00 84 12
-42 D9 50 03 85 12 00 3C A8 D9 03 53 3E 3D 85 12
-00 38 BA D9 02 53 3C 00 85 12 00 34 36 D9 03 30
-3E 3D 85 12 00 30 CE D9 02 30 3C 00 85 12 00 30
-00 00 02 55 3C 00 85 12 00 2C E2 D9 03 55 3E 3D
-85 12 00 28 D8 D9 03 30 3C 3E 85 12 00 24 F6 D9
-02 30 3D 00 85 12 00 20 52 C6 02 49 46 00 1A 42
-CC 1D 8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D EC D9
-04 54 48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48
-29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00
-30 4D B4 D7 04 45 4C 53 45 00 1A 42 CC 1D BA 40
-00 3C 00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F
-20 DA 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
-CC 1D 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0
-FF 03 08 DA 89 48 00 00 A2 53 CC 1D 30 4D 38 D8
-05 41 47 41 49 4E 0D 12 87 12 B4 D9 68 DA 22 C2
-00 00 05 57 48 49 4C 45 0D 12 87 12 0E DA 70 C2
-22 C2 C4 D9 06 52 45 50 45 41 54 00 0D 12 87 12
-B4 D9 68 DA 26 DA 22 C2 CA DA 3D 41 08 4E 3E 4F
-2A 48 0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43
-00 00 C3 3F CE D8 03 42 57 31 84 12 C8 DA 00 00
-E6 DA 03 42 57 32 84 12 C8 DA 00 00 F2 DA 03 42
-57 33 84 12 C8 DA 00 00 0A DB 3D 41 1A 42 CC 1D
-28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A
-00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46
-57 31 84 12 08 DB 00 00 2E DB 03 46 57 32 84 12
-08 DB 00 00 3A DB 03 46 57 33 84 12 08 DB 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 46 D5 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 98 D5 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+98 D5 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 98 D5 FA 23 3C 50 10 00 B0 12
+80 D5 EF 3F 0D 12 87 12 20 C4 24 D5 9E D6 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 98 D5 E5 23 3C 50 80 00 B0 12 80 D5 E0 3F
+44 C6 04 52 45 54 49 00 0D 12 87 12 2C C2 00 13
+0C CA 22 C2 2C C2 2C 00 C0 D5 94 D6 DE D6 2E 4E
+0E DC 09 4B A5 3F F6 D4 03 4D 4F 56 84 12 D4 D6
+00 40 E8 D6 05 4D 4F 56 2E 42 84 12 D4 D6 40 40
+00 00 03 41 44 44 84 12 D4 D6 00 50 02 D7 05 41
+44 44 2E 42 84 12 D4 D6 40 50 0E D7 04 41 44 44
+43 00 84 12 D4 D6 00 60 1C D7 06 41 44 44 43 2E
+42 00 84 12 D4 D6 40 60 C2 D6 04 53 55 42 43 00
+84 12 D4 D6 00 70 3A D7 06 53 55 42 43 2E 42 00
+84 12 D4 D6 40 70 48 D7 03 53 55 42 84 12 D4 D6
+00 80 58 D7 05 53 55 42 2E 42 84 12 D4 D6 40 80
+D2 D4 03 43 4D 50 84 12 D4 D6 00 90 72 D7 05 43
+4D 50 2E 42 84 12 D4 D6 40 90 C0 D4 04 44 41 44
+44 00 84 12 D4 D6 00 A0 8C D7 06 44 41 44 44 2E
+42 00 84 12 D4 D6 40 A0 7E D7 03 42 49 54 84 12
+D4 D6 00 B0 AA D7 05 42 49 54 2E 42 84 12 D4 D6
+40 B0 B6 D7 03 42 49 43 84 12 D4 D6 00 C0 C4 D7
+05 42 49 43 2E 42 84 12 D4 D6 40 C0 D0 D7 03 42
+49 53 84 12 D4 D6 00 D0 DE D7 05 42 49 53 2E 42
+84 12 D4 D6 40 D0 00 00 03 58 4F 52 84 12 D4 D6
+00 E0 F8 D7 05 58 4F 52 2E 42 84 12 D4 D6 40 E0
+2A D7 03 41 4E 44 84 12 D4 D6 00 F0 12 D8 05 41
+4E 44 2E 42 84 12 D4 D6 40 F0 20 C4 C0 D5 30 D8
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+64 D7 03 52 52 43 84 12 2A D8 00 10 42 D8 05 52
+52 43 2E 42 84 12 2A D8 40 10 4E D8 04 53 57 50
+42 00 84 12 2A D8 80 10 5C D8 03 52 52 41 84 12
+2A D8 00 11 6A D8 05 52 52 41 2E 42 84 12 2A D8
+40 11 76 D8 03 53 58 54 84 12 2A D8 80 11 00 00
+04 50 55 53 48 00 84 12 2A D8 00 12 90 D8 06 50
+55 53 48 2E 42 00 84 12 2A D8 40 12 EA D7 04 43
+41 4C 4C 00 84 12 2A D8 80 12 1A 53 0E 4A 0D 12
+87 12 5E C5 64 C7 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 A8 CB 20 C4 24 D5 DC D8 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 E8 C7 00 C9 B0 C3 44 CC FC D8 1B 17 87 12
+94 D6 04 D9 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+84 D8 04 52 52 43 4D 00 84 12 D6 D8 50 00 32 D9
+04 52 52 41 4D 00 84 12 D6 D8 50 01 40 D9 04 52
+4C 41 4D 00 84 12 D6 D8 50 02 4E D9 04 52 52 55
+4D 00 84 12 D6 D8 50 03 9E D8 05 50 55 53 48 4D
+84 12 D6 D8 00 15 6A D9 04 50 4F 50 4D 00 84 12
+D6 D8 00 17 85 12 00 3C 5C D9 03 53 3E 3D 85 12
+00 38 8A D9 02 53 3C 00 85 12 00 34 78 D9 03 30
+3E 3D 85 12 00 30 9E D9 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C B2 D9 03 55 3E 3D
+85 12 00 28 A8 D9 03 30 3C 3E 85 12 00 24 C6 D9
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BC D9
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 9A D7 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+F0 D9 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1E D8
+05 41 47 41 49 4E 0D 12 87 12 84 D9 38 DA 22 C2
+00 00 05 57 48 49 4C 45 0D 12 87 12 DE D9 70 C2
+22 C2 94 D9 06 52 45 50 45 41 54 00 0D 12 87 12
+84 D9 38 DA F6 D9 22 C2 9A DA 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D AE D8 03 42 57 31 84 12 98 DA E2 1D
+B6 DA 03 42 57 32 84 12 98 DA E4 1D C2 DA 03 42
+57 33 84 12 98 DA E6 1D DA DA 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 D8 DA E8 1D FE DA 03 46 57 32 84 12
+D8 DA EA 1D 0A DB 03 46 57 33 84 12 D8 DA EC 1D
 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
-3E E0 00 08 30 4D 46 DB 04 47 4F 54 4F 00 0D 12
-87 12 B4 D9 54 CC 1A CA 22 C2 00 00 05 3F 47 4F
-54 4F 0D 12 87 12 50 DB 54 CC 1A CA 22 C2 00 00
-03 4A 4D 50 0D 12 87 12 54 CC 96 DA 22 C2 7C DB
-04 3F 4A 4D 50 00 0D 12 87 12 50 DB 54 CC 70 C2
-68 DA 22 C2 36 CF 07 7B 54 4F 4F 4C 53 7D 30 4D
-B4 D4 03 41 4E 44 3E FF 30 4D BA D1 02 2E 53 00
+3E E0 00 08 30 4D 16 DB 04 47 4F 54 4F 00 0D 12
+87 12 84 D9 34 CC 02 CA 22 C2 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 20 DB 34 CC 02 CA 22 C2 00 00
+03 4A 4D 50 0D 12 87 12 34 CC 66 DA 22 C2 4C DB
+04 3F 4A 4D 50 00 0D 12 87 12 20 DB 34 CC 70 C2
+38 DA 22 C2 40 CF 07 7B 54 4F 4F 4C 53 7D 30 4D
+AC D4 03 41 4E 44 3E FF 30 4D C2 D1 02 2E 53 00
 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C
 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12
-87 12 2C C2 3C 00 C6 C6 5E C5 2C C2 08 00 C6 C6
-2C C2 3E 00 C6 C6 FC C6 82 C2 82 C2 8E C3 BA C3
-18 DC 5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5
-2C C2 02 00 D0 C3 1A DC 22 C2 CC DB 03 2E 52 53
-8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F BE C8
-01 3F 2E 4E 30 40 26 C5 46 D2 03 50 41 44 85 12
-E4 1C 02 D3 05 57 4F 52 44 53 0D 12 87 12 78 C7
-2C C2 03 00 12 C7 2C C2 D0 1D EA C2 4E DC 2C C2
-10 00 3C C2 18 C3 EA D0 2C C2 00 00 3C C2 2C C2
+87 12 2C C2 3C 00 B0 C6 5E C5 2C C2 08 00 B0 C6
+2C C2 3E 00 B0 C6 EC C6 82 C2 82 C2 8E C3 BA C3
+E8 DB 5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5
+2C C2 02 00 D0 C3 EA DB 22 C2 9C DB 03 2E 52 53
+8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 CE
+01 3F 2E 4E 30 40 26 C5 4E D2 03 50 41 44 85 12
+E4 1C A8 D2 05 57 4F 52 44 53 0D 12 87 12 52 C7
+2C C2 03 00 02 C7 2C C2 CA 1D EA C2 1E DC 2C C2
+10 00 3C C2 18 C3 F2 D0 2C C2 00 00 3C C2 2C C2
 10 00 3C C2 18 C3 2C C2 00 00 C0 C3 3C C2 F8 C3
-4E DC 18 C3 EA C2 A4 C3 B0 C3 AA DC 5A C2 5A C2
-F8 C3 3C C2 4E DC 18 C3 EA C2 2C C2 02 00 D0 C3
-8C DC 4C C2 B0 C3 EC DC 3C C2 2C C2 02 00 20 C3
-EA C2 92 C2 4E DC 18 C3 F2 C2 3C C2 6C CA 2C C2
-7F 00 C6 DB 34 C7 00 C3 2C C2 0F 00 C6 DB 2C C2
-10 00 70 C2 20 C3 12 C7 AC C3 78 DC 5A C2 22 C2
-E4 D0 03 4D 41 58 2E 9F 07 38 2F 53 30 4D F2 DC
-03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D F8 CF 03 55
+1E DC 18 C3 EA C2 A4 C3 B0 C3 7A DC 5A C2 5A C2
+F8 C3 3C C2 1E DC 18 C3 EA C2 2C C2 02 00 D0 C3
+5C DC 4C C2 B0 C3 BC DC 3C C2 2C C2 02 00 20 C3
+EA C2 92 C2 1E DC 18 C3 F2 C2 3C C2 54 CA 2C C2
+7F 00 96 DB 24 C7 00 C3 2C C2 0F 00 96 DB 2C C2
+10 00 70 C2 20 C3 02 C7 AC C3 48 DC 5A C2 22 C2
+EC D0 03 4D 41 58 2E 9F 07 38 2F 53 30 4D C2 DC
+03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D0 03 55
 2E 52 0D 12 87 12 A8 C2 42 C4 2C C2 00 00 A2 C4
-D4 C4 F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 F6 DC
-12 C7 34 C7 22 C2 C8 D1 04 44 55 4D 50 00 0D 12
-12 12 E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 C2
+D4 C4 F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 C6 DC
+02 C7 24 C7 22 C2 D0 D1 04 44 55 4D 50 00 0D 12
+12 12 DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 C2
 82 C2 82 C2 26 C5 2C C2 01 00 20 C3 26 C5 2C C2
-FE FF C6 DB C0 C3 78 C7 F8 C3 2C C2 07 00 12 DD
-FC C6 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3
-00 C3 2C C2 03 00 12 DD E2 C3 7E DD FC C6 FC C6
+FE FF 96 DB C0 C3 52 C7 F8 C3 2C C2 07 00 E2 DC
+EC C6 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3
+00 C3 2C C2 03 00 E2 DC E2 C3 4E DD EC C6 EC C6
 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3 00 C3
-2C C2 7E 00 04 DD 20 C4 F6 DC C6 C6 E2 C3 9C DD
-2C C2 10 00 D0 C3 66 DD B4 C2 2C C4 F2 C2 22 C2
+2C C2 7E 00 D4 DC 20 C4 C6 DC B0 C6 E2 C3 6C DD
+2C C2 10 00 D0 C3 36 DD B4 C2 2C C4 F2 C2 22 C2
 @FFFE
-1A D3
+14 D3
 q
index 73c2c78..e012dfb 100644 (file)
@@ -1,6 +1,6 @@
 @1800
-10 00 66 C6 C0 5D 00 24 05 00 18 00 CE DD 76 D4
-2C C6 3E C6 00 00 00 00
+10 00 01 00 A1 00 C0 5D 05 00 18 00 90 DD 60 D4
+24 C6 36 C6 00 00 00 00 00 00
 @C200
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +36,7 @@ F9 3F 64 C3 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 C3 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 C3 02 42 4C 00
-85 12 20 00 1C C4 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C C4 04 42 41 53 45 00 85 12 DC 1D
 C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA C3 06 55 4D 2F
 4D 4F 44 00 30 12 5A C2 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +44,7 @@ C0 C2 05 53 54 41 54 45 85 12 BE 1D 7E C3 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C C2 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 C4
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 C4 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 C4
 02 23 53 00 0D 12 87 12 A2 C4 DC C4 2D 83 09 93
@@ -53,400 +53,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 C4 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 C4 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C C4 02 55 2E 00 0D 12 87 12 42 C4 2C C2 00 00
-D4 C4 F0 C4 40 C7 08 C7 22 C2 3E C3 02 44 2E 00
+D4 C4 F0 C4 24 C7 EC C6 22 C2 3E C3 02 44 2E 00
 0D 12 87 12 42 C4 70 C2 82 C2 44 C3 D4 C4 92 C2
-14 C5 F0 C4 40 C7 08 C7 22 C2 7C C2 01 2E 0E 93
+14 C5 F0 C4 24 C7 EC C6 22 C2 7C C2 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 C5 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 C2 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC C4 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E C5 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C C6 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 3E C6 30 4D 08 C4 03 4B
-45 59 30 40 AE C5 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 C5
-06 41 43 43 45 50 54 00 3C 40 A4 C6 3B 40 6E C6
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 C6 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 52 C6 4D 15 A2 B3 DC 05
-FD 27 B2 40 11 00 CE 05 E2 C2 03 02 30 41 B2 40
-13 00 CE 05 E2 D2 03 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 C6 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 CC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05
-FD 27 82 48 CE 05 30 4D 9A C6 2D 83 92 B3 DC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 C5 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C C5 04 45 4D 49
-54 00 30 40 C4 C6 CC C6 04 45 43 48 4F 00 B2 40
-82 48 92 C6 82 43 E4 1D 30 4D 5C C5 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 C6 92 43 E4 1D 30 4D
-0E C5 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 C7 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A C7 EF 3F 2C C7 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 C5 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 C7 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 C7 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC C6 04 28 43 52 29 00
-0D 12 87 12 88 C7 02 0D 0A 00 40 C7 22 C2 92 C5
-02 43 52 00 30 40 70 C7 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 C7 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E C7 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 C7
-82 53 22 00 0D 12 87 12 2C C2 88 C7 30 CA B8 C7
-2C C2 22 00 0C C8 A6 C7 DA C7 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC C6 82 2E 22 00 0D 12 87 12 C4 C7 2C C2 40 C7
-30 CA 22 C2 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 C2 34 40 0C C2 30 4D 8C C3 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 C9 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 C9 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 C4 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 C6 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E C3 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E CA 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C C2 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE C7 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 CA 20 C4 0C C8
-A2 CA 3D 40 AA CA E1 22 44 3E AC CA 0A 4E 3E 4F
-3D 40 C2 CA 37 27 3D 40 9C CA 1A E2 BE 1D B8 27
-B2 23 C4 CA 3E 4F 3D 40 9C CA BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 CD CC 3F
-1E CA 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 CA FE CA B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 C3
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 C7 05 0D 0A 6F
-6B 20 40 C7 D6 C5 08 C7 96 CA D6 C2 68 C3 88 C7
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 CB
-2C C2 30 FF 74 C5 A4 C3 88 C7 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 CB 38 C4 EA C2 B0 C3 2A CB
-88 C7 05 0D 0A 20 20 20 AC C3 32 CB F0 C5 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 D2 16 D3
-B2 40 60 C6 54 C6 B2 40 C4 C6 D4 C6 B2 40 70 C7
-86 C7 B2 40 AE C5 D4 C5 82 43 FC DA 82 43 08 DB
-82 43 14 DB 82 43 44 DB 82 43 50 DB 82 43 5C DB
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 C6 B0 12 96 CB A2 B3
-DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 03 02 92 C3
-DC 05 38 40 F0 FF 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 DC 05 F3 23 0D 12 87 12 88 C7 04 1B
-5B 37 6D 00 40 C7 2C C2 E4 1D EA C2 4C C2 B0 C3
-32 CC 88 C7 05 6C 69 6E 65 3A 40 C7 38 C3 26 C5
-DE C6 40 C7 88 C7 04 1B 5B 30 6D 00 40 C7 2E D2
-A6 C7 84 CB 7E CB 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 C7 2C C2 C8 CB 30 CA 22 C2 64 C8 01 27
-0D 12 87 12 20 C4 0C C8 6A C8 B0 C3 70 CC 22 C2
-CC CA 3E C4 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 CC 01 5D B2 43 BE 1D
-30 4D 80 CC 83 5B 27 5D 0D 12 87 12 60 CC 2C C2
-2C C2 30 CA 30 CA 22 C2 BE 4F 02 00 3E 4F 30 4D
-6A C7 82 49 53 00 0D 12 87 12 38 C4 EA C2 B0 C3
-CC CC 98 CC 2C C2 A8 CC 30 CA 22 C2 60 CC A8 CC
-22 C2 B2 CC 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 C7 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 CB 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 C4 0C C8 6A C8 4C C2 B0 C3 70 CC
-68 C3 B0 C3 32 CD 2C C2 2C C2 30 CA 30 CA 2C C2
-30 CA 30 CA 22 C2 82 9F BC 1D 2C 25 0D 12 87 12
-88 C7 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 CB 94 CC 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C C2 22 C2 30 CA 36 CD 82 CC 22 C2 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 CD 01 3A 30 12 6E CD 0D 12 87 12
-E6 C7 20 C4 0C C8 98 CD 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 C8 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C CD BA 40 86 12 FC FF DF 3C 72 CA
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C CD BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 CD 06 43
-52 45 41 54 45 00 B0 12 8C CD BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 CA 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 CE 05 44 45 46 45 52 B0 12 8C CD BA 40 30 40
-FC FF BA 40 2E CE FE FF A9 3C FE CD 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 CD 86 5B
-54 48 45 4E 5D 00 30 4D 7E CE 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C C2 01 00 20 C4 0C C8 78 CA
-3C C2 B0 C3 FE CE 82 C2 82 C2 88 C7 04 5B 49 46
-5D 00 54 CE BA C3 C0 CE 62 C7 2E C3 AC C3 F6 CE
-82 C2 82 C2 88 C7 06 5B 45 4C 53 45 5D 00 54 CE
-BA C3 E4 CE 62 C7 38 C3 3C C2 B0 C3 F6 CE 2E C3
-AC C3 F6 CE 88 C7 06 5B 54 48 45 4E 5D 00 54 CE
-BA C3 F6 CE 38 C3 4C C2 BA C3 9A CE 22 C2 62 C7
-88 C7 05 0D 0A 6B 6F 20 40 C7 D6 C5 86 CA AC C3
-9A CE 8A CE 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 CF 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 C4 0C C8 6A C8 64 C2 5C C3 22 C2
-24 CF 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 C4 0C C8 6A C8 64 C2 22 C2 5C CF 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 CA 06 4D 41 52
-4B 45 52 00 B0 12 8C CD BA 40 84 12 FC FF BA 40
-5A CF FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 CC 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 C3 00 00
-2E 53 30 4D 32 CE 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC C3 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A C7 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C CE 85 42 45 47 49 4E 30 40
-74 C5 E6 CF 85 55 4E 54 49 4C 39 40 B0 C3 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 CC 85 41 47 41 49 4E 39 40 AC C3 EF 3F
-C8 CD 85 57 48 49 4C 45 0D 12 87 12 AC CF 70 C2
-22 C2 EC CC 86 52 45 50 45 41 54 00 0D 12 87 12
-2A D0 EC CF 22 C2 C6 CF 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 C3 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C CF
-84 4C 4F 4F 50 00 39 40 E2 C3 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE C5 85 2B 4C 4F 4F 50 39 40 D0 C3 E5 3F
-80 D0 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 C3
-00 00 BA 40 AC C3 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 D0
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 D0 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 CE 2C C2 10 00 2C C2
-00 00 C0 C3 2C C2 00 00 30 CA E2 C3 44 D1 74 C5
-2C C2 CE 1D 3C C2 EA C2 30 CA F2 C2 1E CE 2C C2
-D0 1D F2 C2 22 C2 5E CC 05 46 4F 52 54 48 84 12
-5E D1 D0 DB 94 D4 46 DD 68 D1 7A D4 B4 D0 0E DD
-3A DC 58 DC 6C D2 1C DD 62 DC 00 00 C4 DB 8A CC
-4E DC 00 00 24 D0 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 CD 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 C7 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 D0 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E D1 CC D1 E0 D1 F0 D1
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC D1 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 D1 76 D4 CE DD 44 D0 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 D2 92 42 0C 18 34 D2 EF 3F
-24 D2 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 D2 92 42 CC 1D 34 D2 30 4D 38 D2 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 D1 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CE FF FA 23 B0 12 8A CB
-B2 40 CE DD 0C 18 B2 40 76 D4 0E 18 CA 3F A8 CF
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 C7 06 0D 1B 5B 37 6D 23 00 40 C7 5E C5 88 C7
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 C7 2C C2 30 FF 74 C5 20 C3 26 C5 88 C7 0B 62
-79 74 65 73 20 66 72 65 65 20 DA CB 86 D2 04 57
-41 52 4D 00 30 40 B8 D2 F8 CF 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 92 D3 30 01 B2 40 88 5A 5C 01
-B2 D0 EF 7F 06 02 B2 D0 00 04 04 02 B2 40 08 FF
-02 02 B2 D0 08 FF 06 02 B2 D0 F0 00 04 02 F2 40
-F0 00 22 03 F2 D0 F0 00 26 03 F2 D0 0F 00 24 03
-F2 40 A5 00 61 01 B2 40 86 00 62 01 82 43 66 01
-39 40 80 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
-9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
-18 83 FE 23 19 83 FA 23 B2 D2 B0 01 92 C3 B0 01
-F2 D0 10 00 2A 03 F2 C0 40 00 A1 04 3A 40 26 D3
-39 40 CE FF 89 4A 00 00 29 53 FC 23 92 42 02 18
-F0 FF B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00
-29 53 39 90 FF 1F FA 2B 31 40 E0 1C 3F 40 80 1C
-37 40 22 C2 36 40 B4 C2 35 40 00 C2 34 40 0C C2
-B2 40 0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42
-08 18 D2 B3 01 02 04 20 38 E3 18 53 82 48 08 18
-B2 40 81 00 C0 05 92 43 C6 05 B2 40 A1 00 C8 05
-F2 D0 03 00 0D 02 92 C3 C0 05 92 D3 DA 05 3D 40
-44 D4 38 90 0A 00 2A 27 38 90 16 00 27 2F 28 93
-00 23 F5 26 14 D3 96 D1 09 41 53 53 45 4D 42 4C
-45 52 84 12 5E D1 9E DA 0C DB 52 DA 76 DB 18 DA
-9E DB 1C D7 00 00 0E DA C2 DA 70 DA B0 DA 2C D8
-00 00 00 00 AE DB 92 D1 B0 D2 85 48 49 32 4C 4F
-0D 12 87 12 74 C5 C0 CF 30 CA 82 CC 9C D1 52 D4
-22 C2 1A D3 04 43 4F 44 45 00 B0 12 8C CD A2 82
-CC 1D 0D 12 87 12 7E CD AC C3 8C D4 00 00 07 45
-4E 44 43 4F 44 45 0D 12 87 12 B6 D1 36 CD 22 C2
-48 D4 03 41 53 4D 92 42 E0 1D C0 1D B2 40 56 D4
-E0 1D E3 3F AE D4 06 45 4E 44 41 53 4D 00 92 42
-C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
-CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
-CC 1D B2 43 BE 1D 30 40 B6 D1 00 00 05 4C 4F 32
-48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D
-39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A
-FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12
-0C C8 6A C8 BA C3 50 D5 24 C9 B0 C3 70 CC 72 D5
-52 D5 29 4E 39 90 86 12 02 20 2E 53 30 41 39 90
-85 12 03 20 1E 4E 02 00 30 41 39 90 84 12 01 20
-2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12 0C C8
-24 C9 B0 C3 A2 D5 98 D5 21 53 3E 90 10 00 BE 2D
-30 41 A4 D5 B2 41 CA 1D 22 D3 30 41 0D 12 87 12
-20 C4 1C D5 B6 D5 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20
-92 53 CA 1D B0 12 3E D5 0E 93 04 20 B2 40 00 03
-C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C
-2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20
-B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02
-C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C
-B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20
-B2 40 10 02 C4 1D 92 53 CA 1D B0 12 3E D5 EB 3F
-FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53
-CA 1D B0 12 84 D5 0E 20 B2 50 10 00 C4 1D 3E 40
-2B 00 B0 12 84 D5 33 24 92 92 C6 1D CA 1D 02 24
-92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 84 D5
-F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12 3E D5
-B0 12 74 D5 E8 3F 0D 12 87 12 20 C4 1C D5 B0 D6
-FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50 82 00
-C4 1D C1 3F B0 12 84 D5 DE 23 B2 50 80 00 C4 1D
-3E 40 28 00 B0 12 3E D5 B0 12 74 D5 D4 23 3D 40
-70 CC 30 4D 4C C6 04 52 45 54 49 00 0D 12 87 12
-2C C2 00 13 30 CA 22 C2 2C C2 2C 00 AC D5 A6 D6
-02 D7 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F 0C D5
-03 4D 4F 56 84 12 F8 D6 00 40 10 D7 05 4D 4F 56
-2E 42 84 12 F8 D6 40 40 00 00 03 41 44 44 84 12
-F8 D6 00 50 2A D7 05 41 44 44 2E 42 84 12 F8 D6
-40 50 36 D7 04 41 44 44 43 00 84 12 F8 D6 00 60
-44 D7 06 41 44 44 43 2E 42 00 84 12 F8 D6 40 60
-E6 D6 04 53 55 42 43 00 84 12 F8 D6 00 70 62 D7
-06 53 55 42 43 2E 42 00 84 12 F8 D6 40 70 70 D7
-03 53 55 42 84 12 F8 D6 00 80 80 D7 05 53 55 42
-2E 42 84 12 F8 D6 40 80 E8 D4 03 43 4D 50 84 12
-F8 D6 00 90 9A D7 05 43 4D 50 2E 42 84 12 F8 D6
-40 90 D6 D4 04 44 41 44 44 00 84 12 F8 D6 00 A0
-B4 D7 06 44 41 44 44 2E 42 00 84 12 F8 D6 40 A0
-A6 D7 03 42 49 54 84 12 F8 D6 00 B0 D2 D7 05 42
-49 54 2E 42 84 12 F8 D6 40 B0 DE D7 03 42 49 43
-84 12 F8 D6 00 C0 EC D7 05 42 49 43 2E 42 84 12
-F8 D6 40 C0 F8 D7 03 42 49 53 84 12 F8 D6 00 D0
-06 D8 05 42 49 53 2E 42 84 12 F8 D6 40 D0 00 00
-03 58 4F 52 84 12 F8 D6 00 E0 20 D8 05 58 4F 52
-2E 42 84 12 F8 D6 40 E0 52 D7 03 41 4E 44 84 12
-F8 D6 00 F0 3A D8 05 41 4E 44 2E 42 84 12 F8 D6
-40 F0 20 C4 AC D5 58 D8 1A 42 C4 1D B2 F0 70 00
-C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F 8C D7
-03 52 52 43 84 12 52 D8 00 10 70 D8 05 52 52 43
-2E 42 84 12 52 D8 40 10 7C D8 04 53 57 50 42 00
-84 12 52 D8 80 10 8A D8 03 52 52 41 84 12 52 D8
-00 11 98 D8 05 52 52 41 2E 42 84 12 52 D8 40 11
-A4 D8 03 53 58 54 84 12 52 D8 80 11 00 00 04 50
-55 53 48 00 84 12 52 D8 00 12 BE D8 06 50 55 53
-48 2E 42 00 84 12 52 D8 40 12 12 D8 04 43 41 4C
-4C 00 84 12 52 D8 80 12 2C C2 2C 00 AC D5 A6 D6
-F2 D8 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90
-00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90
-10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12
-5E C5 88 C7 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
-64 73 D4 CB CC D8 05 50 55 53 48 4D 84 12 E8 D8
-00 15 36 D9 04 50 4F 50 4D 00 84 12 E8 D8 00 17
-20 C4 1C D5 56 D9 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 0C C8
-24 C9 B0 C3 70 CC A6 D6 7A D9 0A 4E 3E 4F 1A 83
-2A 92 CA 2F 8A 10 5A 06 6F 3F B2 D8 04 52 52 43
-4D 00 84 12 50 D9 50 00 8C D9 04 52 52 41 4D 00
-84 12 50 D9 50 01 9A D9 04 52 4C 41 4D 00 84 12
-50 D9 50 02 A8 D9 04 52 52 55 4D 00 84 12 50 D9
-50 03 85 12 00 3C B6 D9 03 53 3E 3D 85 12 00 38
-C8 D9 02 53 3C 00 85 12 00 34 44 D9 03 30 3E 3D
-85 12 00 30 DC D9 02 30 3C 00 85 12 00 30 00 00
-02 55 3C 00 85 12 00 2C F0 D9 03 55 3E 3D 85 12
-00 28 E6 D9 03 30 3C 3E 85 12 00 24 04 DA 02 30
-3D 00 85 12 00 20 58 C6 02 49 46 00 1A 42 CC 1D
-8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D FA D9 04 54
-48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53
-0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D
-C2 D7 04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C
-00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 2E DA
-05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D
-2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03
-08 DA 89 48 00 00 A2 53 CC 1D 30 4D 46 D8 05 41
-47 41 49 4E 0D 12 87 12 C2 D9 76 DA 22 C2 00 00
-05 57 48 49 4C 45 0D 12 87 12 1C DA 70 C2 22 C2
-D2 D9 06 52 45 50 45 41 54 00 0D 12 87 12 C2 D9
-76 DA 34 DA 22 C2 D8 DA 3D 41 08 4E 3E 4F 2A 48
-0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00
-C3 3F DC D8 03 42 57 31 84 12 D6 DA 00 00 F4 DA
-03 42 57 32 84 12 D6 DA 00 00 00 DB 03 42 57 33
-84 12 D6 DA 00 00 18 DB 3D 41 1A 42 CC 1D 28 4E
-08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00
-3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31
-84 12 16 DB 00 00 3C DB 03 46 57 32 84 12 16 DB
-00 00 48 DB 03 46 57 33 84 12 16 DB 00 00 3E 90
-00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
-00 08 30 4D 54 DB 04 47 4F 54 4F 00 0D 12 87 12
-C2 D9 60 CC 26 CA 22 C2 00 00 05 3F 47 4F 54 4F
-0D 12 87 12 5E DB 60 CC 26 CA 22 C2 00 00 03 4A
-4D 50 0D 12 87 12 60 CC A4 DA 22 C2 8A DB 04 3F
-4A 4D 50 00 0D 12 87 12 5E DB 60 CC 70 C2 76 DA
-22 C2 42 CF 07 7B 54 4F 4F 4C 53 7D 30 4D C2 D4
-03 41 4E 44 3E FF 30 4D C6 D1 02 2E 53 00 8F 4E
-FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
-8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
-2C C2 3C 00 D2 C6 5E C5 2C C2 08 00 D2 C6 2C C2
-3E 00 D2 C6 08 C7 82 C2 82 C2 8E C3 BA C3 26 DC
-5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5 2C C2
-02 00 D0 C3 28 DC 22 C2 DA DB 03 2E 52 53 8F 4E
-FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F CA C8 01 3F
-2E 4E 30 40 26 C5 52 D2 03 50 41 44 85 12 E4 1C
-0E D3 05 57 4F 52 44 53 0D 12 87 12 84 C7 2C C2
-03 00 1E C7 2C C2 D0 1D EA C2 5C DC 2C C2 10 00
-3C C2 18 C3 F6 D0 2C C2 00 00 3C C2 2C C2 10 00
-3C C2 18 C3 2C C2 00 00 C0 C3 3C C2 F8 C3 5C DC
-18 C3 EA C2 A4 C3 B0 C3 B8 DC 5A C2 5A C2 F8 C3
-3C C2 5C DC 18 C3 EA C2 2C C2 02 00 D0 C3 9A DC
-4C C2 B0 C3 FA DC 3C C2 2C C2 02 00 20 C3 EA C2
-92 C2 5C DC 18 C3 F2 C2 3C C2 78 CA 2C C2 7F 00
-D4 DB 40 C7 00 C3 2C C2 0F 00 D4 DB 2C C2 10 00
-70 C2 20 C3 1E C7 AC C3 86 DC 5A C2 22 C2 F0 D0
-03 4D 41 58 2E 9F 07 38 2F 53 30 4D 00 DD 03 4D
-49 4E 2E 9F F9 3B 3E 4F 30 4D 04 D0 03 55 2E 52
-0D 12 87 12 A8 C2 42 C4 2C C2 00 00 A2 C4 D4 C4
-F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 04 DD 1E C7
-40 C7 22 C2 D4 D1 04 44 55 4D 50 00 0D 12 12 12
-E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 C2 82 C2
-82 C2 26 C5 2C C2 01 00 20 C3 26 C5 2C C2 FE FF
-D4 DB C0 C3 84 C7 F8 C3 2C C2 07 00 20 DD 08 C7
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 C2 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC C4 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 C4 03 4B 45 59 30 40 B0 C5
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 C6 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 C6 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 C5 06 41 43 43 45 50 54 00
+3C 40 92 C6 3B 40 5C C6 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 C6 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A C6 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C2 03 02 30 41 B2 40 13 00 CE 05 E2 D2 03 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E C6 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 C6 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C C5 04 45 4D 49 54 00
+30 40 B4 C6 08 4E 3E 4F E0 3F AA C6 04 45 43 48
+4F 00 B2 40 82 48 80 C6 82 43 DE 1D 30 4D 5C C5
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 C6 92 43
+DE 1D 30 4D 0E C5 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 C6 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E C7 EF 3F 10 C7
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 C5 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A C7 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C C7 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 C5 02 43
+52 00 30 40 56 C7 0D 12 87 12 64 C7 02 0D 0A 00
+24 C7 22 C2 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E C7 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A C7 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA C6 82 53 22 00
+0D 12 87 12 2C C2 64 C7 0C CA 94 C7 2C C2 22 00
+E8 C7 82 C7 B6 C7 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 C6 82 2E
+22 00 0D 12 87 12 A0 C7 2C C2 24 C7 0C CA 22 C2
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 C2 34 40
+0C C2 30 4D 8C C3 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 C9 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 C9 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 C4 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC C6 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E C3 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A CA 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C C2 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A C7 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 CA 20 C4 E8 C7 7E CA 3D 40
+86 CA E1 22 48 3E 88 CA 0A 4E 3E 4F 3D 40 9E CA
+37 27 3D 40 78 CA 1A E2 BE 1D B8 27 B2 23 A0 CA
+3E 4F 3D 40 78 CA BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 CD CC 3F FA C9 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 CA DA CA B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 C3 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 C7 05 0D 0A 6F 6B 20 24 C7
+CE C5 EC C6 72 CA D6 C2 68 C3 64 C7 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C CB 2C C2 30 FF
+74 C5 A4 C3 64 C7 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C CB 38 C4 EA C2 B0 C3 06 CB 64 C7 05 0D
+0A 20 20 20 AC C3 0E CB E8 C5 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 D2 B0 D2 B2 40 4E C6
+4C C6 B2 40 B4 C6 B2 C6 B2 40 56 C7 54 C7 B2 40
+B0 C5 AE C5 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 C6 B0 12
+72 CB A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
+03 02 92 C3 DC 05 38 40 F0 FF 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
+64 C7 04 1B 5B 37 6D 00 24 C7 2C C2 DE 1D EA C2
+4C C2 B0 C3 06 CC 64 C7 05 6C 69 6E 65 3A 24 C7
+38 C3 26 C5 C2 C6 24 C7 64 C7 04 1B 5B 30 6D 00
+24 C7 2A D2 82 C7 60 CB 5A CB 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 C7 2C C2 9C CB 0C CA 22 C2
+40 C8 01 27 0D 12 87 12 20 C4 E8 C7 46 C8 B0 C3
+44 CC 22 C2 A8 CA 3E C4 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 CC 01 5D
+B2 43 BE 1D 30 4D 54 CC 83 5B 27 5D 0D 12 87 12
+34 CC 2C C2 2C C2 0C CA 0C CA 22 C2 BE 4F 02 00
+3E 4F 30 4D 6E C5 82 49 53 00 0D 12 87 12 38 C4
+EA C2 B0 C3 A0 CC 6C CC 2C C2 7C CC 0C CA 22 C2
+34 CC 7C CC 22 C2 86 CC 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C C7
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC CA 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 C4 E8 C7 46 C8 4C C2
+B0 C3 44 CC 68 C3 B0 C3 06 CD 2C C2 2C C2 0C CA
+0C CA 2C C2 0C CA 0C CA 22 C2 82 9F BC 1D 40 25
+0D 12 87 12 64 C7 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 CB 68 CC 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C C2 22 C2 0C CA 0A CD 56 CC
+22 C2 2A CD 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 CD BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 CD 01 3A 30 12
+64 CD 0D 12 87 12 C2 C7 20 C4 E8 C7 8E CD 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 CD 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 C7 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 CD BA 40 86 12 FC FF DC 3C
+4E CA 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 CD
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 CD
+06 43 52 45 41 54 45 00 B0 12 82 CD BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE CA 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A CE 05 44 45 46 45 52 B0 12 82 CD AC 3C
+A6 C8 05 3E 42 4F 44 59 2E 52 30 4D 00 CE 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C CD
+86 5B 54 48 45 4E 5D 00 30 4D 80 CE 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C C2 01 00 20 C4 E8 C7
+54 CA 3C C2 B0 C3 00 CF 82 C2 82 C2 64 C7 04 5B
+49 46 5D 00 56 CE BA C3 C2 CE 46 C7 2E C3 AC C3
+F8 CE 82 C2 82 C2 64 C7 06 5B 45 4C 53 45 5D 00
+56 CE BA C3 E6 CE 46 C7 38 C3 3C C2 B0 C3 F8 CE
+2E C3 AC C3 F8 CE 64 C7 06 5B 54 48 45 4E 5D 00
+56 CE BA C3 F8 CE 38 C3 4C C2 BA C3 9C CE 22 C2
+46 C7 64 C7 05 0D 0A 6B 6F 20 24 C7 CE C5 62 CA
+AC C3 9C CE 8C CE 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 CF 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 C4 E8 C7 46 C8 64 C2 22 C2 26 CF
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 CF 5C C3 22 C2 58 CF 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E CA 06 4D 41 52 4B 45 52 00
+B0 12 82 CD BA 40 84 12 FC FF BA 40 56 CF FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 CC 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 C3 00 00 2E 53 30 4D
+34 CE 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC C3 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E C7 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E CE 85 42 45 47 49 4E 30 40 74 C5 E2 CF
+85 55 4E 54 49 4C 39 40 B0 C3 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A CC
+85 41 47 41 49 4E 39 40 AC C3 EF 3F CA CD 85 57
+48 49 4C 45 0D 12 87 12 A8 CF 70 C2 22 C2 C0 CC
+86 52 45 50 45 41 54 00 0D 12 87 12 26 D0 E8 CF
+22 C2 C2 CF 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 C3 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 CF 84 4C 4F 4F
+50 00 39 40 E2 C3 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 C5
+85 2B 4C 4F 4F 50 39 40 D0 C3 E5 3F 7C D0 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 C3 00 00 BA 40
+AC C3 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE D0 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E D0 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 CE 2C C2 10 00 2C C2 00 00 C0 C3
+2C C2 00 00 0C CA E2 C3 40 D1 74 C5 2C C2 C8 1D
+3C C2 EA C2 0C CA F2 C2 20 CE 2C C2 CA 1D F2 C2
+22 C2 32 CC 05 46 4F 52 54 48 84 12 5A D1 92 DB
+08 D5 08 DD 64 D1 64 D4 B0 D0 D0 DC FC DB 1A DC
+68 D2 DE DC 24 DC 00 00 86 DB 5E CC 10 DC 00 00
+20 D0 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA CC 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE C7 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 D0
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A D1 C8 D1 DC D1 EC D1 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 D1
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 D1 60 D4
+90 DD 40 D0 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E D2 92 42 0C 18 30 D2 EF 3F 20 D2 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E D2 92 42
+C6 1D 30 D2 30 4D 34 D2 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 D1 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 CB B2 40 90 DD 0C 18 B2 40
+60 D4 0E 18 CC 3F 82 D2 04 57 41 52 4D 00 30 40
+B2 D2 1E 42 08 18 0D 12 87 12 64 C7 06 0D 1B 5B
+37 6D 23 00 24 C7 5E C5 64 C7 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 C7 2C C2 30 FF
+74 C5 20 C3 26 C5 64 C7 0B 62 79 74 65 73 20 66
+72 65 65 20 AE CB F4 CF 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 92 D3 30 01 B2 40 88 5A 5C 01 B2 D0
+EF 7F 06 02 B2 D0 00 04 04 02 B2 40 08 FF 02 02
+B2 D0 08 FF 06 02 B2 D0 F0 00 04 02 F2 40 F0 00
+22 03 F2 D0 F0 00 26 03 F2 D0 0F 00 24 03 F2 40
+A5 00 61 01 B2 40 86 00 62 01 82 43 66 01 39 40
+80 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 D2 B0 01 92 C3 B0 01 F2 D0
+10 00 2A 03 F2 C0 40 00 A1 04 39 40 32 00 29 83
+B9 40 14 D3 CE FF FB 23 B2 40 54 C6 F0 FF B2 40
+18 00 0A 18 39 40 00 04 29 83 89 43 00 1C FC 23
+31 40 E0 1C 3F 40 80 1C 37 40 22 C2 36 40 B4 C2
+35 40 00 C2 34 40 0C C2 B2 40 0A 00 DC 1D B2 43
+B4 1D 92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20
+38 E3 18 53 82 48 08 18 B2 40 81 00 C0 05 92 42
+02 18 C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02
+92 C3 C0 05 92 D3 DA 05 3D 40 2E D4 38 90 0A 00
+33 27 38 90 16 00 30 2F 28 93 09 23 FE 26 AE D2
+92 D1 09 41 53 53 45 4D 42 4C 45 52 84 12 5A D1
+60 DA CE DA 14 DA 38 DB DA D9 60 DB F4 D6 00 00
+D0 D9 84 DA 32 DA 72 DA 04 D8 00 00 00 00 70 DB
+8E D1 A4 CF 85 48 49 32 4C 4F 0D 12 87 12 74 C5
+BC CF 0C CA 56 CC 98 D1 3C D4 22 C2 08 D3 04 43
+4F 44 45 00 B0 12 82 CD A2 82 C6 1D 0D 12 87 12
+74 CD AC C3 76 D4 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 B2 D1 0A CD 22 C2 32 D4 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 40 D4 DA 1D E3 3F 98 D4
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 B2 D1 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 7E D4 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 4C CD 56 CC 1A D5 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 E8 C7 46 C8 BA C3
+5A D5 00 C9 B0 C3 44 CC 7C D5 5C D5 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 46 D5 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 E8 C7 00 C9 B0 C3 B8 D5 AE D5 21 53
+3E 90 10 00 84 2D E2 2B BA D5 B2 41 C4 1D DE 3F
+0D 12 87 12 20 C4 24 D5 CA D5 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 46 D5 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 46 D5 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 98 D5 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+98 D5 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 98 D5 FA 23 3C 50 10 00 B0 12
+80 D5 EF 3F 0D 12 87 12 20 C4 24 D5 9E D6 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 98 D5 E5 23 3C 50 80 00 B0 12 80 D5 E0 3F
+44 C6 04 52 45 54 49 00 0D 12 87 12 2C C2 00 13
+0C CA 22 C2 2C C2 2C 00 C0 D5 94 D6 DE D6 2E 4E
+0E DC 09 4B A5 3F F6 D4 03 4D 4F 56 84 12 D4 D6
+00 40 E8 D6 05 4D 4F 56 2E 42 84 12 D4 D6 40 40
+00 00 03 41 44 44 84 12 D4 D6 00 50 02 D7 05 41
+44 44 2E 42 84 12 D4 D6 40 50 0E D7 04 41 44 44
+43 00 84 12 D4 D6 00 60 1C D7 06 41 44 44 43 2E
+42 00 84 12 D4 D6 40 60 C2 D6 04 53 55 42 43 00
+84 12 D4 D6 00 70 3A D7 06 53 55 42 43 2E 42 00
+84 12 D4 D6 40 70 48 D7 03 53 55 42 84 12 D4 D6
+00 80 58 D7 05 53 55 42 2E 42 84 12 D4 D6 40 80
+D2 D4 03 43 4D 50 84 12 D4 D6 00 90 72 D7 05 43
+4D 50 2E 42 84 12 D4 D6 40 90 C0 D4 04 44 41 44
+44 00 84 12 D4 D6 00 A0 8C D7 06 44 41 44 44 2E
+42 00 84 12 D4 D6 40 A0 7E D7 03 42 49 54 84 12
+D4 D6 00 B0 AA D7 05 42 49 54 2E 42 84 12 D4 D6
+40 B0 B6 D7 03 42 49 43 84 12 D4 D6 00 C0 C4 D7
+05 42 49 43 2E 42 84 12 D4 D6 40 C0 D0 D7 03 42
+49 53 84 12 D4 D6 00 D0 DE D7 05 42 49 53 2E 42
+84 12 D4 D6 40 D0 00 00 03 58 4F 52 84 12 D4 D6
+00 E0 F8 D7 05 58 4F 52 2E 42 84 12 D4 D6 40 E0
+2A D7 03 41 4E 44 84 12 D4 D6 00 F0 12 D8 05 41
+4E 44 2E 42 84 12 D4 D6 40 F0 20 C4 C0 D5 30 D8
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+64 D7 03 52 52 43 84 12 2A D8 00 10 42 D8 05 52
+52 43 2E 42 84 12 2A D8 40 10 4E D8 04 53 57 50
+42 00 84 12 2A D8 80 10 5C D8 03 52 52 41 84 12
+2A D8 00 11 6A D8 05 52 52 41 2E 42 84 12 2A D8
+40 11 76 D8 03 53 58 54 84 12 2A D8 80 11 00 00
+04 50 55 53 48 00 84 12 2A D8 00 12 90 D8 06 50
+55 53 48 2E 42 00 84 12 2A D8 40 12 EA D7 04 43
+41 4C 4C 00 84 12 2A D8 80 12 1A 53 0E 4A 0D 12
+87 12 5E C5 64 C7 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 A8 CB 20 C4 24 D5 DC D8 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 E8 C7 00 C9 B0 C3 44 CC FC D8 1B 17 87 12
+94 D6 04 D9 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+84 D8 04 52 52 43 4D 00 84 12 D6 D8 50 00 32 D9
+04 52 52 41 4D 00 84 12 D6 D8 50 01 40 D9 04 52
+4C 41 4D 00 84 12 D6 D8 50 02 4E D9 04 52 52 55
+4D 00 84 12 D6 D8 50 03 9E D8 05 50 55 53 48 4D
+84 12 D6 D8 00 15 6A D9 04 50 4F 50 4D 00 84 12
+D6 D8 00 17 85 12 00 3C 5C D9 03 53 3E 3D 85 12
+00 38 8A D9 02 53 3C 00 85 12 00 34 78 D9 03 30
+3E 3D 85 12 00 30 9E D9 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C B2 D9 03 55 3E 3D
+85 12 00 28 A8 D9 03 30 3C 3E 85 12 00 24 C6 D9
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BC D9
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 9A D7 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+F0 D9 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1E D8
+05 41 47 41 49 4E 0D 12 87 12 84 D9 38 DA 22 C2
+00 00 05 57 48 49 4C 45 0D 12 87 12 DE D9 70 C2
+22 C2 94 D9 06 52 45 50 45 41 54 00 0D 12 87 12
+84 D9 38 DA F6 D9 22 C2 9A DA 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D AE D8 03 42 57 31 84 12 98 DA E2 1D
+B6 DA 03 42 57 32 84 12 98 DA E4 1D C2 DA 03 42
+57 33 84 12 98 DA E6 1D DA DA 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 D8 DA E8 1D FE DA 03 46 57 32 84 12
+D8 DA EA 1D 0A DB 03 46 57 33 84 12 D8 DA EC 1D
+3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
+3E E0 00 08 30 4D 16 DB 04 47 4F 54 4F 00 0D 12
+87 12 84 D9 34 CC 02 CA 22 C2 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 20 DB 34 CC 02 CA 22 C2 00 00
+03 4A 4D 50 0D 12 87 12 34 CC 66 DA 22 C2 4C DB
+04 3F 4A 4D 50 00 0D 12 87 12 20 DB 34 CC 70 C2
+38 DA 22 C2 40 CF 07 7B 54 4F 4F 4C 53 7D 30 4D
+AC D4 03 41 4E 44 3E FF 30 4D C2 D1 02 2E 53 00
+8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C
+2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12
+87 12 2C C2 3C 00 B0 C6 5E C5 2C C2 08 00 B0 C6
+2C C2 3E 00 B0 C6 EC C6 82 C2 82 C2 8E C3 BA C3
+E8 DB 5A C2 5A C2 22 C2 C0 C3 F8 C3 EA C2 26 C5
+2C C2 02 00 D0 C3 EA DB 22 C2 9C DB 03 2E 52 53
+8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 CE
+01 3F 2E 4E 30 40 26 C5 4E D2 03 50 41 44 85 12
+E4 1C A8 D2 05 57 4F 52 44 53 0D 12 87 12 52 C7
+2C C2 03 00 02 C7 2C C2 CA 1D EA C2 1E DC 2C C2
+10 00 3C C2 18 C3 F2 D0 2C C2 00 00 3C C2 2C C2
+10 00 3C C2 18 C3 2C C2 00 00 C0 C3 3C C2 F8 C3
+1E DC 18 C3 EA C2 A4 C3 B0 C3 7A DC 5A C2 5A C2
+F8 C3 3C C2 1E DC 18 C3 EA C2 2C C2 02 00 D0 C3
+5C DC 4C C2 B0 C3 BC DC 3C C2 2C C2 02 00 20 C3
+EA C2 92 C2 1E DC 18 C3 F2 C2 3C C2 54 CA 2C C2
+7F 00 96 DB 24 C7 00 C3 2C C2 0F 00 96 DB 2C C2
+10 00 70 C2 20 C3 02 C7 AC C3 48 DC 5A C2 22 C2
+EC D0 03 4D 41 58 2E 9F 07 38 2F 53 30 4D C2 DC
+03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D 00 D0 03 55
+2E 52 0D 12 87 12 A8 C2 42 C4 2C C2 00 00 A2 C4
+D4 C4 F0 C4 B4 C2 82 C2 20 C3 2C C2 00 00 C6 DC
+02 C7 24 C7 22 C2 D0 D1 04 44 55 4D 50 00 0D 12
+12 12 DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 C2
+82 C2 82 C2 26 C5 2C C2 01 00 20 C3 26 C5 2C C2
+FE FF 96 DB C0 C3 52 C7 F8 C3 2C C2 07 00 E2 DC
+EC C6 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3
+00 C3 2C C2 03 00 E2 DC E2 C3 4E DD EC C6 EC C6
 F8 C3 2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3 00 C3
-2C C2 03 00 20 DD E2 C3 8C DD 08 C7 08 C7 F8 C3
-2C C2 10 00 18 C3 F8 C3 C0 C3 F8 C3 00 C3 2C C2
-7E 00 12 DD 20 C4 04 DD D2 C6 E2 C3 AA DD 2C C2
-10 00 D0 C3 74 DD B4 C2 2C C4 F2 C2 22 C2
+2C C2 7E 00 D4 DC 20 C4 C6 DC B0 C6 E2 C3 6C DD
+2C C2 10 00 D0 C3 36 DD B4 C2 2C C4 F2 C2 22 C2
 @FFFE
-26 D3
+14 D3
 q
index 5642532..7696bee 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 48 80 3E 80 04 05 00 18 00 CC 5F 74 56
-2C 48 3E 48 00 00 00 00
+10 00 08 00 A1 F7 80 3E 05 00 18 00 8E 5F 5E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,400 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 40 49 08 49 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 40 49 08 49 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 3E 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 A4 48 3B 40 6E 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 48 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 52 48 4D 15 A2 B3 DC 05
-FD 27 B2 40 11 00 CE 05 E2 C3 23 02 30 41 B2 40
-13 00 CE 05 E2 D3 23 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 48 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 CC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05
-FD 27 82 48 CE 05 30 4D 9A 48 2D 83 92 B3 DC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 47 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 47 04 45 4D 49
-54 00 30 40 C4 48 CC 48 04 45 43 48 4F 00 B2 40
-82 48 92 48 82 43 E4 1D 30 4D 5C 47 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 48 92 43 E4 1D 30 4D
-0E 47 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 49 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 49 EF 3F 2C 49 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 47 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 49 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 49 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 48 04 28 43 52 29 00
-0D 12 87 12 88 49 02 0D 0A 00 40 49 22 44 92 47
-02 43 52 00 30 40 70 49 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 49 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E 49 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 49
-82 53 22 00 0D 12 87 12 2C 44 88 49 30 4C B8 49
-2C 44 22 00 0C 4A A6 49 DA 49 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC 48 82 2E 22 00 0D 12 87 12 C4 49 2C 44 40 49
-30 4C 22 44 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 44 34 40 0C 44 30 4D 8C 45 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 4B 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 4B 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 48 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E 4C 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C 44 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 49 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 4C 20 46 0C 4A
-A2 4C 3D 40 AA 4C E1 22 44 3E AC 4C 0A 4E 3E 4F
-3D 40 C2 4C 37 27 3D 40 9C 4C 1A E2 BE 1D B8 27
-B2 23 C4 4C 3E 4F 3D 40 9C 4C BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 4F CC 3F
-1E 4C 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 4C FE 4C B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 45
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 49 05 0D 0A 6F
-6B 20 40 49 D6 47 08 49 96 4C D6 44 68 45 88 49
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 4D
-2C 44 30 FF 74 47 A4 45 88 49 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 4D 38 46 EA 44 B0 45 2A 4D
-88 49 05 0D 0A 20 20 20 AC 45 32 4D F0 47 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 54 16 55
-B2 40 60 48 54 48 B2 40 C4 48 D4 48 B2 40 70 49
-86 49 B2 40 AE 47 D4 47 82 43 FA 5C 82 43 06 5D
-82 43 12 5D 82 43 42 5D 82 43 4E 5D 82 43 5A 5D
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 48 B0 12 96 4D A2 B3
-DC 05 FD 27 B2 40 11 00 CE 05 E2 C3 23 02 92 C3
-DC 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 DC 05 F3 23 0D 12 87 12 88 49 04 1B
-5B 37 6D 00 40 49 2C 44 E4 1D EA 44 4C 44 B0 45
-32 4E 88 49 05 6C 69 6E 65 3A 40 49 38 45 26 47
-DE 48 40 49 88 49 04 1B 5B 30 6D 00 40 49 2E 54
-A6 49 84 4D 7E 4D 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 49 2C 44 C8 4D 30 4C 22 44 64 4A 01 27
-0D 12 87 12 20 46 0C 4A 6A 4A B0 45 70 4E 22 44
-CC 4C 3E 46 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 4E 01 5D B2 43 BE 1D
-30 4D 80 4E 83 5B 27 5D 0D 12 87 12 60 4E 2C 44
-2C 44 30 4C 30 4C 22 44 BE 4F 02 00 3E 4F 30 4D
-6A 49 82 49 53 00 0D 12 87 12 38 46 EA 44 B0 45
-CC 4E 98 4E 2C 44 A8 4E 30 4C 22 44 60 4E A8 4E
-22 44 B2 4E 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 49 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 4D 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 46 0C 4A 6A 4A 4C 44 B0 45 70 4E
-68 45 B0 45 32 4F 2C 44 2C 44 30 4C 30 4C 2C 44
-30 4C 30 4C 22 44 82 9F BC 1D 2C 25 0D 12 87 12
-88 49 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 4D 94 4E 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C 44 22 44 30 4C 36 4F 82 4E 22 44 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 4F 01 3A 30 12 6E 4F 0D 12 87 12
-E6 49 20 46 0C 4A 98 4F 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 4A 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 4F BA 40 86 12 FC FF DF 3C 72 4C
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 4F BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 4F 06 43
-52 45 41 54 45 00 B0 12 8C 4F BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 4C 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 50 05 44 45 46 45 52 B0 12 8C 4F BA 40 30 40
-FC FF BA 40 2E 50 FE FF A9 3C FE 4F 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 4F 86 5B
-54 48 45 4E 5D 00 30 4D 7E 50 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 44 01 00 20 46 0C 4A 78 4C
-3C 44 B0 45 FE 50 82 44 82 44 88 49 04 5B 49 46
-5D 00 54 50 BA 45 C0 50 62 49 2E 45 AC 45 F6 50
-82 44 82 44 88 49 06 5B 45 4C 53 45 5D 00 54 50
-BA 45 E4 50 62 49 38 45 3C 44 B0 45 F6 50 2E 45
-AC 45 F6 50 88 49 06 5B 54 48 45 4E 5D 00 54 50
-BA 45 F6 50 38 45 4C 44 BA 45 9A 50 22 44 62 49
-88 49 05 0D 0A 6B 6F 20 40 49 D6 47 86 4C AC 45
-9A 50 8A 50 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 51 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 0C 4A 6A 4A 64 44 5C 45 22 44
-24 51 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 46 0C 4A 6A 4A 64 44 22 44 5C 51 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 4C 06 4D 41 52
-4B 45 52 00 B0 12 8C 4F BA 40 84 12 FC FF BA 40
-5A 51 FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 4E 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 45 00 00
-2E 53 30 4D 32 50 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 49 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C 50 85 42 45 47 49 4E 30 40
-74 47 E6 51 85 55 4E 54 49 4C 39 40 B0 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 4E 85 41 47 41 49 4E 39 40 AC 45 EF 3F
-C8 4F 85 57 48 49 4C 45 0D 12 87 12 AC 51 70 44
-22 44 EC 4E 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 52 EC 51 22 44 C6 51 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 45 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C 51
-84 4C 4F 4F 50 00 39 40 E2 45 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 47 85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F
-80 52 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 45
-00 00 BA 40 AC 45 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 52
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 52 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 50 2C 44 10 00 2C 44
-00 00 C0 45 2C 44 00 00 30 4C E2 45 44 53 74 47
-2C 44 CE 1D 3C 44 EA 44 30 4C F2 44 1E 50 2C 44
-D0 1D F2 44 22 44 5E 4E 05 46 4F 52 54 48 84 12
-5E 53 CE 5D 92 56 44 5F 68 53 78 56 B4 52 0C 5F
-38 5E 56 5E 6C 54 1A 5F 60 5E 00 00 C2 5D 8A 4E
-4C 5E 00 00 24 52 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 4F 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 49 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 52 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E 53 CC 53 E0 53 F0 53
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 53 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 53 74 56 CC 5F 44 52 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 54 92 42 0C 18 34 54 EF 3F
-24 54 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 54 92 42 CC 1D 34 54 30 4D 38 54 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 53 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CC FF FA 23 B0 12 8A 4D
-B2 40 CC 5F 0C 18 B2 40 74 56 0E 18 CA 3F A8 51
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 49 06 0D 1B 5B 37 6D 23 00 40 49 5E 47 88 49
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 49 2C 44 30 FF 74 47 20 45 26 47 88 49 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 4D 86 54 04 57
-41 52 4D 00 30 40 B8 54 F8 51 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A 5C 01 92 D3 04 02
-B2 40 FE FF 02 02 A2 83 06 02 B2 D0 00 42 24 02
-B2 D3 26 02 B2 40 FF BF 22 02 F2 43 22 03 F2 D3
-26 03 F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43
-41 01 F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43
-66 01 39 40 00 01 B2 40 33 00 64 01 D2 43 61 01
-92 D2 9E 01 08 18 A2 93 08 18 01 24 59 07 38 40
-59 14 18 83 FE 23 19 83 FA 23 B2 D2 B0 01 F2 D0
-10 00 2A 03 F2 C0 40 00 A1 04 3A 40 26 55 39 40
-CC FF 89 4A 00 00 29 53 FC 23 92 42 02 18 F0 FF
-B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00 29 53
-39 90 FF 23 FA 2B 31 40 E0 1C 3F 40 80 1C 37 40
-22 44 36 40 B4 44 35 40 00 44 34 40 0C 44 B2 40
-0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42 08 18
-D2 B3 01 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 C0 05 B2 42 C6 05 B2 40 A1 F7 C8 05 F2 D0
-03 00 0D 02 92 C3 C0 05 92 D3 DA 05 3D 40 42 56
-38 90 0A 00 2B 27 38 90 16 00 28 2F 28 93 01 23
-F6 26 14 55 96 53 09 41 53 53 45 4D 42 4C 45 52
-84 12 5E 53 9C 5C 0A 5D 50 5C 74 5D 16 5C 9C 5D
-1A 59 00 00 0C 5C C0 5C 6E 5C AE 5C 2A 5A 00 00
-00 00 AC 5D 92 53 B0 54 85 48 49 32 4C 4F 0D 12
-87 12 74 47 C0 51 30 4C 82 4E 9C 53 50 56 22 44
-1A 55 04 43 4F 44 45 00 B0 12 8C 4F A2 82 CC 1D
-0D 12 87 12 7E 4F AC 45 8A 56 00 00 07 45 4E 44
-43 4F 44 45 0D 12 87 12 B6 53 36 4F 22 44 46 56
-03 41 53 4D 92 42 E0 1D C0 1D B2 40 54 56 E0 1D
-E3 3F AC 56 06 45 4E 44 41 53 4D 00 92 42 C0 1D
-E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 1D
-BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 1D
-B2 43 BE 1D 30 40 B6 53 00 00 05 4C 4F 32 48 49
-A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D 39 48
-2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A FC 27
-1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12 0C 4A
-6A 4A BA 45 4E 57 24 4B B0 45 70 4E 70 57 50 57
-29 4E 39 90 86 12 02 20 2E 53 30 41 39 90 85 12
-03 20 1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52
-30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00 3E 40
-29 00 12 12 CA 1D 92 53 CA 1D 87 12 0C 4A 24 4B
-B0 45 A0 57 96 57 21 53 3E 90 10 00 BE 2D 30 41
-A2 57 B2 41 CA 1D 22 D3 30 41 0D 12 87 12 20 46
-1A 57 B4 57 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53
-CA 1D B0 12 3C 57 0E 93 04 20 B2 40 00 03 C4 1D
-27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C 2E 93
-04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20 B2 40
-20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02 C4 1D
-0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C B2 40
-30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40
-10 02 C4 1D 92 53 CA 1D B0 12 3C 57 EB 3F FA 90
-40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53 CA 1D
-B0 12 82 57 0E 20 B2 50 10 00 C4 1D 3E 40 2B 00
-B0 12 82 57 33 24 92 92 C6 1D CA 1D 02 24 92 53
-CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 82 57 F9 23
-B2 50 10 00 C4 1D 3E 40 28 00 B0 12 3C 57 B0 12
-72 57 E8 3F 0D 12 87 12 20 46 1A 57 AE 58 FE 90
-26 00 00 00 3E 40 20 00 04 20 B2 50 82 00 C4 1D
-C1 3F B0 12 82 57 DE 23 B2 50 80 00 C4 1D 3E 40
-28 00 B0 12 3C 57 B0 12 72 57 D4 23 3D 40 70 4E
-30 4D 4C 48 04 52 45 54 49 00 0D 12 87 12 2C 44
-00 13 30 4C 22 44 2C 44 2C 00 AA 57 A4 58 00 59
-2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F 0A 57 03 4D
-4F 56 84 12 F6 58 00 40 0E 59 05 4D 4F 56 2E 42
-84 12 F6 58 40 40 00 00 03 41 44 44 84 12 F6 58
-00 50 28 59 05 41 44 44 2E 42 84 12 F6 58 40 50
-34 59 04 41 44 44 43 00 84 12 F6 58 00 60 42 59
-06 41 44 44 43 2E 42 00 84 12 F6 58 40 60 E4 58
-04 53 55 42 43 00 84 12 F6 58 00 70 60 59 06 53
-55 42 43 2E 42 00 84 12 F6 58 40 70 6E 59 03 53
-55 42 84 12 F6 58 00 80 7E 59 05 53 55 42 2E 42
-84 12 F6 58 40 80 E6 56 03 43 4D 50 84 12 F6 58
-00 90 98 59 05 43 4D 50 2E 42 84 12 F6 58 40 90
-D4 56 04 44 41 44 44 00 84 12 F6 58 00 A0 B2 59
-06 44 41 44 44 2E 42 00 84 12 F6 58 40 A0 A4 59
-03 42 49 54 84 12 F6 58 00 B0 D0 59 05 42 49 54
-2E 42 84 12 F6 58 40 B0 DC 59 03 42 49 43 84 12
-F6 58 00 C0 EA 59 05 42 49 43 2E 42 84 12 F6 58
-40 C0 F6 59 03 42 49 53 84 12 F6 58 00 D0 04 5A
-05 42 49 53 2E 42 84 12 F6 58 40 D0 00 00 03 58
-4F 52 84 12 F6 58 00 E0 1E 5A 05 58 4F 52 2E 42
-84 12 F6 58 40 E0 50 59 03 41 4E 44 84 12 F6 58
-00 F0 38 5A 05 41 4E 44 2E 42 84 12 F6 58 40 F0
-20 46 AA 57 56 5A 1A 42 C4 1D B2 F0 70 00 C4 1D
-8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F 8A 59 03 52
-52 43 84 12 50 5A 00 10 6E 5A 05 52 52 43 2E 42
-84 12 50 5A 40 10 7A 5A 04 53 57 50 42 00 84 12
-50 5A 80 10 88 5A 03 52 52 41 84 12 50 5A 00 11
-96 5A 05 52 52 41 2E 42 84 12 50 5A 40 11 A2 5A
-03 53 58 54 84 12 50 5A 80 11 00 00 04 50 55 53
-48 00 84 12 50 5A 00 12 BC 5A 06 50 55 53 48 2E
-42 00 84 12 50 5A 40 12 10 5A 04 43 41 4C 4C 00
-84 12 50 5A 80 12 2C 44 2C 00 AA 57 A4 58 F0 5A
-59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90 00 15
-00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00
-03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E 47
-88 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73
-D4 4D CA 5A 05 50 55 53 48 4D 84 12 E6 5A 00 15
-34 5B 04 50 4F 50 4D 00 84 12 E6 5A 00 17 20 46
-1A 57 54 5B 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 0C 4A 24 4B
-B0 45 70 4E A4 58 78 5B 0A 4E 3E 4F 1A 83 2A 92
-CA 2F 8A 10 5A 06 6F 3F B0 5A 04 52 52 43 4D 00
-84 12 4E 5B 50 00 8A 5B 04 52 52 41 4D 00 84 12
-4E 5B 50 01 98 5B 04 52 4C 41 4D 00 84 12 4E 5B
-50 02 A6 5B 04 52 52 55 4D 00 84 12 4E 5B 50 03
-85 12 00 3C B4 5B 03 53 3E 3D 85 12 00 38 C6 5B
-02 53 3C 00 85 12 00 34 42 5B 03 30 3E 3D 85 12
-00 30 DA 5B 02 30 3C 00 85 12 00 30 00 00 02 55
-3C 00 85 12 00 2C EE 5B 03 55 3E 3D 85 12 00 28
-E4 5B 03 30 3C 3E 85 12 00 24 02 5C 02 30 3D 00
-85 12 00 20 58 48 02 49 46 00 1A 42 CC 1D 8A 4E
-00 00 A2 53 CC 1D 0E 4A 30 4D F8 5B 04 54 48 45
-4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53 0A 89
-0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D C0 59
-04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C 00 00
-A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 2C 5C 05 55
-4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D 2A 83
-0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA
-89 48 00 00 A2 53 CC 1D 30 4D 44 5A 05 41 47 41
-49 4E 0D 12 87 12 C0 5B 74 5C 22 44 00 00 05 57
-48 49 4C 45 0D 12 87 12 1A 5C 70 44 22 44 D0 5B
-06 52 45 50 45 41 54 00 0D 12 87 12 C0 5B 74 5C
-32 5C 22 44 D6 5C 3D 41 08 4E 3E 4F 2A 48 0A 93
-04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00 C3 3F
-DA 5A 03 42 57 31 84 12 D4 5C 00 00 F2 5C 03 42
-57 32 84 12 D4 5C 00 00 FE 5C 03 42 57 33 84 12
-D4 5C 00 00 16 5D 3D 41 1A 42 CC 1D 28 4E 08 93
-08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00 3E 4F
-30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31 84 12
-14 5D 00 00 3A 5D 03 46 57 32 84 12 14 5D 00 00
-46 5D 03 46 57 33 84 12 14 5D 00 00 3E 90 00 30
-07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08
-30 4D 52 5D 04 47 4F 54 4F 00 0D 12 87 12 C0 5B
-60 4E 26 4C 22 44 00 00 05 3F 47 4F 54 4F 0D 12
-87 12 5C 5D 60 4E 26 4C 22 44 00 00 03 4A 4D 50
-0D 12 87 12 60 4E A2 5C 22 44 88 5D 04 3F 4A 4D
-50 00 0D 12 87 12 5C 5D 60 4E 70 44 74 5C 22 44
-42 51 07 7B 54 4F 4F 4C 53 7D 30 4D C0 56 03 41
-4E 44 3E FF 30 4D C6 53 02 2E 53 00 8F 4E FE FF
-0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83 8F 4E
-FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12 2C 44
-3C 00 D2 48 5E 47 2C 44 08 00 D2 48 2C 44 3E 00
-D2 48 08 49 82 44 82 44 8E 45 BA 45 24 5E 5A 44
-5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44 02 00
-D0 45 26 5E 22 44 D8 5D 03 2E 52 53 8F 4E FE FF
-8F 41 FA FF 3E 40 E0 1C D2 3F CA 4A 01 3F 2E 4E
-30 40 26 47 52 54 03 50 41 44 85 12 E4 1C 0E 55
-05 57 4F 52 44 53 0D 12 87 12 84 49 2C 44 03 00
-1E 49 2C 44 D0 1D EA 44 5A 5E 2C 44 10 00 3C 44
-18 45 F6 52 2C 44 00 00 3C 44 2C 44 10 00 3C 44
-18 45 2C 44 00 00 C0 45 3C 44 F8 45 5A 5E 18 45
-EA 44 A4 45 B0 45 B6 5E 5A 44 5A 44 F8 45 3C 44
-5A 5E 18 45 EA 44 2C 44 02 00 D0 45 98 5E 4C 44
-B0 45 F8 5E 3C 44 2C 44 02 00 20 45 EA 44 92 44
-5A 5E 18 45 F2 44 3C 44 78 4C 2C 44 7F 00 D2 5D
-40 49 00 45 2C 44 0F 00 D2 5D 2C 44 10 00 70 44
-20 45 1E 49 AC 45 84 5E 5A 44 22 44 F0 52 03 4D
-41 58 2E 9F 07 38 2F 53 30 4D FE 5E 03 4D 49 4E
-2E 9F F9 3B 3E 4F 30 4D 04 52 03 55 2E 52 0D 12
-87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46 F0 46
-B4 44 82 44 20 45 2C 44 00 00 02 5F 1E 49 40 49
-22 44 D4 53 04 44 55 4D 50 00 0D 12 12 12 E2 1D
-B2 40 10 00 E2 1D 2E 5F 87 12 70 44 82 44 82 44
-26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF D2 5D
-C0 45 84 49 F8 45 2C 44 07 00 1E 5F 08 49 F8 45
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C3 23 02 30 41 B2 40 13 00 CE 05 E2 D3 23 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 48 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C3
+23 02 92 C3 DC 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 90 5D
+06 57 06 5F 64 53 62 56 B0 52 CE 5E FA 5D 18 5E
+68 54 DC 5E 22 5E 00 00 84 5D 5E 4E 0E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 5E 56
+8E 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 8E 5F 0C 18 B2 40
+5E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 D3 04 02 B2 40
+FE FF 02 02 A2 83 06 02 B2 D0 00 42 24 02 B2 D3
+26 02 B2 40 FF BF 22 02 F2 43 22 03 F2 D3 26 03
+F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01
+F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43 66 01
+39 40 00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
+9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
+18 83 FE 23 19 83 FA 23 B2 D2 B0 01 F2 D0 10 00
+2A 03 F2 C0 40 00 A1 04 39 40 34 00 29 83 B9 40
+14 55 CC FF FB 23 B2 40 54 48 F0 FF B2 40 18 00
+0A 18 39 40 00 08 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40
+00 44 34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 2C 56 38 90 0A 00 34 27
+38 90 16 00 31 2F 28 93 0A 23 FF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 5E 5C
+CC 5C 12 5C 36 5D D8 5B 5E 5D F2 58 00 00 CE 5B
+82 5C 30 5C 70 5C 02 5A 00 00 00 00 6E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 3A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 74 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 30 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 3E 56 DA 1D E3 3F 96 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 7C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 18 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 58 57
+00 4B B0 45 44 4E 7A 57 5A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 44 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 B6 57 AC 57 21 53 3E 90
+10 00 84 2D E2 2B B8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 22 57 C8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 44 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 44 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+96 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 96 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 96 57 FA 23 3C 50 10 00 B0 12 7E 57
+EF 3F 0D 12 87 12 20 46 22 57 9C 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+96 57 E5 23 3C 50 80 00 B0 12 7E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 BE 57 92 58 DC 58 2E 4E 0E DC
+09 4B A5 3F F4 56 03 4D 4F 56 84 12 D2 58 00 40
+E6 58 05 4D 4F 56 2E 42 84 12 D2 58 40 40 00 00
+03 41 44 44 84 12 D2 58 00 50 00 59 05 41 44 44
+2E 42 84 12 D2 58 40 50 0C 59 04 41 44 44 43 00
+84 12 D2 58 00 60 1A 59 06 41 44 44 43 2E 42 00
+84 12 D2 58 40 60 C0 58 04 53 55 42 43 00 84 12
+D2 58 00 70 38 59 06 53 55 42 43 2E 42 00 84 12
+D2 58 40 70 46 59 03 53 55 42 84 12 D2 58 00 80
+56 59 05 53 55 42 2E 42 84 12 D2 58 40 80 D0 56
+03 43 4D 50 84 12 D2 58 00 90 70 59 05 43 4D 50
+2E 42 84 12 D2 58 40 90 BE 56 04 44 41 44 44 00
+84 12 D2 58 00 A0 8A 59 06 44 41 44 44 2E 42 00
+84 12 D2 58 40 A0 7C 59 03 42 49 54 84 12 D2 58
+00 B0 A8 59 05 42 49 54 2E 42 84 12 D2 58 40 B0
+B4 59 03 42 49 43 84 12 D2 58 00 C0 C2 59 05 42
+49 43 2E 42 84 12 D2 58 40 C0 CE 59 03 42 49 53
+84 12 D2 58 00 D0 DC 59 05 42 49 53 2E 42 84 12
+D2 58 40 D0 00 00 03 58 4F 52 84 12 D2 58 00 E0
+F6 59 05 58 4F 52 2E 42 84 12 D2 58 40 E0 28 59
+03 41 4E 44 84 12 D2 58 00 F0 10 5A 05 41 4E 44
+2E 42 84 12 D2 58 40 F0 20 46 BE 57 2E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 62 59
+03 52 52 43 84 12 28 5A 00 10 40 5A 05 52 52 43
+2E 42 84 12 28 5A 40 10 4C 5A 04 53 57 50 42 00
+84 12 28 5A 80 10 5A 5A 03 52 52 41 84 12 28 5A
+00 11 68 5A 05 52 52 41 2E 42 84 12 28 5A 40 11
+74 5A 03 53 58 54 84 12 28 5A 80 11 00 00 04 50
+55 53 48 00 84 12 28 5A 00 12 8E 5A 06 50 55 53
+48 2E 42 00 84 12 28 5A 40 12 E8 59 04 43 41 4C
+4C 00 84 12 28 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 22 57 DA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E FA 5A 1B 17 87 12 92 58
+02 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 82 5A
+04 52 52 43 4D 00 84 12 D4 5A 50 00 30 5B 04 52
+52 41 4D 00 84 12 D4 5A 50 01 3E 5B 04 52 4C 41
+4D 00 84 12 D4 5A 50 02 4C 5B 04 52 52 55 4D 00
+84 12 D4 5A 50 03 9C 5A 05 50 55 53 48 4D 84 12
+D4 5A 00 15 68 5B 04 50 4F 50 4D 00 84 12 D4 5A
+00 17 85 12 00 3C 5A 5B 03 53 3E 3D 85 12 00 38
+88 5B 02 53 3C 00 85 12 00 34 76 5B 03 30 3E 3D
+85 12 00 30 9C 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C B0 5B 03 55 3E 3D 85 12
+00 28 A6 5B 03 30 3C 3E 85 12 00 24 C4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+98 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F EE 5B
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1C 5A 05 41
+47 41 49 4E 0D 12 87 12 82 5B 36 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 DC 5B 70 44 22 44
+92 5B 06 52 45 50 45 41 54 00 0D 12 87 12 82 5B
+36 5C F4 5B 22 44 98 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D AC 5A 03 42 57 31 84 12 96 5C E2 1D B4 5C
+03 42 57 32 84 12 96 5C E4 1D C0 5C 03 42 57 33
+84 12 96 5C E6 1D D8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 D6 5C E8 1D FC 5C 03 46 57 32 84 12 D6 5C
+EA 1D 08 5D 03 46 57 33 84 12 D6 5C EC 1D 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D 14 5D 04 47 4F 54 4F 00 0D 12 87 12
+82 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 1E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 64 5C 22 44 4A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 1E 5D 34 4E 70 44 36 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D AA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 E6 5D
+5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
+02 00 D0 45 E8 5D 22 44 9A 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 1C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 1C 5E
+18 45 EA 44 A4 45 B0 45 78 5E 5A 44 5A 44 F8 45
+3C 44 1C 5E 18 45 EA 44 2C 44 02 00 D0 45 5A 5E
+4C 44 B0 45 BA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 1C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+94 5D 24 49 00 45 2C 44 0F 00 94 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 46 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D C0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
+0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
+F0 46 B4 44 82 44 20 45 2C 44 00 00 C4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
+82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
+94 5D C0 45 52 49 F8 45 2C 44 07 00 E0 5E EC 48
+F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
+2C 44 03 00 E0 5E E2 45 4C 5F EC 48 EC 48 F8 45
 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
-03 00 1E 5F E2 45 8A 5F 08 49 08 49 F8 45 2C 44
-10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44 7E 00
-10 5F 20 46 02 5F D2 48 E2 45 A8 5F 2C 44 10 00
-D0 45 72 5F B4 44 2C 46 F2 44 22 44
+7E 00 D2 5E 20 46 C4 5E B0 48 E2 45 6A 5F 2C 44
+10 00 D0 45 34 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-26 55
+14 55
 q
index d1dbb10..2364b1a 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 60 48 80 3E 50 C3 05 00 18 00 C2 5F 6A 56
-2C 48 38 48 00 00 00 00
+10 00 03 00 00 21 80 3E 05 00 18 00 8E 5F 5E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,400 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 34 49 FC 48 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 34 49 FC 48 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 38 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 98 48 3B 40 68 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C 48 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 4C 48 4D 15 B2 40 11 00
-CE 05 E2 C3 23 02 30 41 B2 40 13 00 CE 05 E2 D3
-23 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A 48
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 CE 05 30 4D 8E 48 2D 83
-92 B3 DC 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 1D 02 24 92 53 E4 1D 3E 8F 3D 41 30 4D A8 47
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C 47
-04 45 4D 49 54 00 30 40 B8 48 C0 48 04 45 43 48
-4F 00 B2 40 82 48 86 48 82 43 E4 1D 30 4D 5C 47
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 48 92 43
-E4 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 48 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E 49 EF 3F 20 49
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C3 23 02 30 41 B2 40 13 00 CE 05 E2 D3 23 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 48 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A 49 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C 49 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 48 04 28
-43 52 29 00 0D 12 87 12 7C 49 02 0D 0A 00 34 49
-22 44 92 47 02 43 52 00 30 40 64 49 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 49 07 43 41 50 53 5F 4F 4E B2 43 B4 1D 30 4D
-92 49 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 1D
-30 4D 0A 49 82 53 22 00 0D 12 87 12 2C 44 7C 49
-24 4C AC 49 2C 44 22 00 00 4A 9A 49 CE 49 3D 41
-6E 4E 1E 83 82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63
-CC 1D 30 4D E0 48 82 2E 22 00 0D 12 87 12 B8 49
-2C 44 34 49 24 4C 22 44 00 00 04 57 4F 52 44 00
-3C 40 C6 1D 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 1D F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 1D 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 44 34 40 0C 44 30 4D 8C 45 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 1D 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 1D 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 4B 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A 4B 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 46
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 1D 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC 48 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E 45 01 2C 1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00
-3E 4F 30 4D 22 4C 87 4C 49 54 45 52 41 4C 82 93
-BE 1D 0F 24 1A 42 CC 1D A2 52 CC 1D BA 40 2C 44
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 49 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 1D 82 4E
-C6 1D B2 4F C8 1D 3E 4F 30 4D 0D 12 87 12 7A 4C
-20 46 00 4A 96 4C 3D 40 9E 4C E1 22 44 3E A0 4C
-0A 4E 3E 4F 3D 40 B6 4C 37 27 3D 40 90 4C 1A E2
-BE 1D B8 27 B2 23 B8 4C 3E 4F 3D 40 90 4C BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 4F CC 3F 12 4C 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 1D 3C 49 3B 49 3A 49 3D 15 87 12 8A 4C
-F2 4C B2 41 CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41
-30 4D 94 45 04 51 55 49 54 00 31 40 E0 1C B2 40
-00 1C 00 1C 82 43 BE 1D 82 43 08 18 87 12 7C 49
-05 0D 0A 6F 6B 20 34 49 D6 47 FC 48 8A 4C D6 44
-68 45 7C 49 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC 4D 2C 44 30 FF 74 47 A4 45 7C 49 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC 4D 38 46 EA 44
-B0 45 1E 4D 7C 49 05 0D 0A 20 20 20 AC 45 26 4D
-F0 47 05 41 42 4F 52 54 3F 40 80 1C C6 3F B2 40
-AC 54 0A 55 B2 40 5A 48 4E 48 B2 40 B8 48 C8 48
-B2 40 64 49 7A 49 B2 40 AE 47 D4 47 82 43 F0 5C
-82 43 FC 5C 82 43 08 5D 82 43 38 5D 82 43 44 5D
-82 43 50 5D B2 40 0A 00 E2 1D 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 48 B0 12
-8A 4D A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C3
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C3
 23 02 92 C3 DC 05 38 40 A0 AA 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
-7C 49 04 1B 5B 37 6D 00 34 49 2C 44 E4 1D EA 44
-4C 44 B0 45 26 4E 7C 49 05 6C 69 6E 65 3A 34 49
-38 45 26 47 D2 48 34 49 7C 49 04 1B 5B 30 6D 00
-34 49 22 54 9A 49 78 4D 72 4D 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 49 2C 44 BC 4D 24 4C 22 44
-58 4A 01 27 0D 12 87 12 20 46 00 4A 5E 4A B0 45
-64 4E 22 44 C0 4C 3E 46 81 5C 92 42 C6 1D CA 1D
-30 4D 00 00 81 5B 82 43 BE 1D 30 4D 68 4E 01 5D
-B2 43 BE 1D 30 4D 74 4E 83 5B 27 5D 0D 12 87 12
-54 4E 2C 44 2C 44 24 4C 24 4C 22 44 BE 4F 02 00
-3E 4F 30 4D 5E 49 82 49 53 00 0D 12 87 12 38 46
-EA 44 B0 45 C0 4E 8C 4E 2C 44 9C 4E 24 4C 22 44
-54 4E 9C 4E 22 44 A6 4E 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D B4 49
-87 52 45 43 55 52 53 45 19 42 CC 1D 99 42 BA 1D
-00 00 A2 53 CC 1D 30 4D 04 4D 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 46 00 4A 5E 4A 4C 44
-B0 45 64 4E 68 45 B0 45 26 4F 2C 44 2C 44 24 4C
-24 4C 2C 44 24 4C 24 4C 22 44 82 9F BC 1D 2C 25
-0D 12 87 12 7C 49 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 4D 88 4E 81 3B 82 93 BE 1D
-8C 27 0D 12 87 12 2C 44 22 44 24 4C 2A 4F 76 4E
-22 44 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 1D 82 4F BC 1D 30 4D 4A 4F 01 3A 30 12 62 4F
-0D 12 87 12 DA 49 20 46 00 4A 8C 4F 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 1D 82 49 B8 1D 82 4A
-BA 1D 2A 52 82 4A CC 1D 30 41 FA 49 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 4F BA 40 86 12 FC FF
-DF 3C 66 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 4F BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 4F 06 43 52 45 41 54 45 00 B0 12 80 4F BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 4C 05 44 4F 45
-53 3E 1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C 50 05 44 45 46 45 52 B0 12 80 4F
-BA 40 30 40 FC FF BA 40 22 50 FE FF A9 3C F2 4F
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A 4F 86 5B 54 48 45 4E 5D 00 30 4D 72 50 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46
-00 4A 6C 4C 3C 44 B0 45 F2 50 82 44 82 44 7C 49
-04 5B 49 46 5D 00 48 50 BA 45 B4 50 56 49 2E 45
-AC 45 EA 50 82 44 82 44 7C 49 06 5B 45 4C 53 45
-5D 00 48 50 BA 45 D8 50 56 49 38 45 3C 44 B0 45
-EA 50 2E 45 AC 45 EA 50 7C 49 06 5B 54 48 45 4E
-5D 00 48 50 BA 45 EA 50 38 45 4C 44 BA 45 8E 50
-22 44 56 49 7C 49 05 0D 0A 6B 6F 20 34 49 D6 47
-7A 4C AC 45 8E 50 7E 50 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 51 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 46 00 4A 5E 4A 64 44
-5C 45 22 44 18 51 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 00 4A 5E 4A 64 44 22 44 50 51
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 4C
-06 4D 41 52 4B 45 52 00 B0 12 80 4F BA 40 84 12
-FC FF BA 40 4E 51 FE FF 9A 42 CE 1D 00 00 28 83
-8A 48 02 00 A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D
-A8 49 FE FF 89 48 00 00 30 4D C8 4E 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 1D A2 52 CC 1D BE 40
-B0 45 00 00 2E 53 30 4D 26 50 84 45 4C 53 45 00
-A2 52 CC 1D 1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E 49 84 54 48 45 4E 00
-9E 42 CC 1D 00 00 3E 4F 30 4D 40 50 85 42 45 47
-49 4E 30 40 74 47 DA 51 85 55 4E 54 49 4C 39 40
-B0 45 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A 4E 85 41 47 41 49 4E 39 40
-AC 45 EF 3F BC 4F 85 57 48 49 4C 45 0D 12 87 12
-A0 51 70 44 22 44 E0 4E 86 52 45 50 45 41 54 00
-0D 12 87 12 1E 52 E0 51 22 44 BA 51 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42 CC 1D BE 40
-C0 45 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
-30 4D 60 51 84 4C 4F 4F 50 00 39 40 E2 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42
-00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE 47 85 2B 4C 4F 4F 50 39 40
-D0 45 E5 3F 74 52 85 4C 45 41 56 45 1A 42 CC 1D
-BA 40 F2 45 00 00 BA 40 AC 45 02 00 B2 50 06 00
-CC 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
-30 4D B6 52 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 52 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA 4F 2C 44
-10 00 2C 44 00 00 C0 45 2C 44 00 00 24 4C E2 45
-38 53 74 47 2C 44 CE 1D 3C 44 EA 44 24 4C F2 44
-12 50 2C 44 D0 1D F2 44 22 44 52 4E 05 46 4F 52
-54 48 84 12 52 53 C4 5D 88 56 3A 5F 5C 53 6E 56
-A8 52 02 5F 2E 5E 4C 5E 60 54 10 5F 56 5E 00 00
-B8 5D 7E 4E 42 5E 00 00 18 52 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 1D 38 40 D2 1D B5 3F FA 4E
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 1D 38 40 D0 1D A2 3F E6 49 04 4F 4E 4C 59 00
-82 43 D2 1D 30 4D 4C 52 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 1D E0 1D 30 4D 62 53 C0 53
-D4 53 E4 53 3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 53 09 50 57 52 5F 53 54 41
-54 45 84 12 DC 53 6A 56 C2 5F 38 52 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 54 92 42 0C 18
-28 54 EF 3F 18 54 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 1D 26 54 92 42 CC 1D 28 54 30 4D 2C 54
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 1D 0E 18
-92 42 CC 1D 0C 18 EC 3F 1C 53 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 CC FF FA 23
-B0 12 7E 4D B2 40 C2 5F 0C 18 B2 40 6A 56 0E 18
-CA 3F 9C 51 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C 49 06 0D 1B 5B 37 6D 23 00 34 49
-5E 47 7C 49 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 49 2C 44 30 FF 74 47 20 45 26 47
-7C 49 0B 62 79 74 65 73 20 66 72 65 65 20 CE 4D
-7A 54 04 57 41 52 4D 00 30 40 AC 54 EC 51 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A 5C 01
-92 D3 04 02 B2 40 FE FF 02 02 A2 83 06 02 B2 D0
-00 42 24 02 B2 D3 26 02 B2 40 FF BF 22 02 F2 43
-22 03 F2 D3 26 03 F2 40 A5 00 41 01 F2 40 10 00
-40 01 D2 43 41 01 F2 40 A5 00 61 01 B2 40 48 00
-62 01 82 43 66 01 39 40 00 01 B2 40 33 00 64 01
-D2 43 61 01 92 D2 9E 01 08 18 A2 93 08 18 01 24
-59 07 38 40 59 14 18 83 FE 23 19 83 FA 23 B2 D2
-B0 01 F2 D0 10 00 2A 03 F2 C0 40 00 A1 04 3A 40
-1A 55 39 40 CC FF 89 4A 00 00 29 53 FC 23 92 42
-02 18 F0 FF B2 40 18 00 0A 18 39 40 00 1C 89 43
-00 00 29 53 39 90 FF 23 FA 2B 31 40 E0 1C 3F 40
-80 1C 37 40 22 44 36 40 B4 44 35 40 00 44 34 40
-0C 44 B2 40 0A 00 E2 1D B2 43 B4 1D 92 C3 30 01
-18 42 08 18 D2 B3 01 02 04 20 38 E3 18 53 82 48
-08 18 B2 40 81 00 C0 05 B2 40 03 00 C6 05 B2 40
-00 21 C8 05 F2 D0 03 00 0D 02 92 C3 C0 05 92 D3
-DA 05 3D 40 38 56 38 90 0A 00 2A 27 38 90 16 00
-27 2F 28 93 00 23 F5 26 08 55 8A 53 09 41 53 53
-45 4D 42 4C 45 52 84 12 52 53 92 5C 00 5D 46 5C
-6A 5D 0C 5C 92 5D 10 59 00 00 02 5C B6 5C 64 5C
-A4 5C 20 5A 00 00 00 00 A2 5D 86 53 A4 54 85 48
-49 32 4C 4F 0D 12 87 12 74 47 B4 51 24 4C 76 4E
-90 53 46 56 22 44 0E 55 04 43 4F 44 45 00 B0 12
-80 4F A2 82 CC 1D 0D 12 87 12 72 4F AC 45 80 56
-00 00 07 45 4E 44 43 4F 44 45 0D 12 87 12 AA 53
-2A 4F 22 44 3C 56 03 41 53 4D 92 42 E0 1D C0 1D
-B2 40 4A 56 E0 1D E3 3F A2 56 06 45 4E 44 41 53
-4D 00 92 42 C0 1D E0 1D E8 3F 00 00 05 43 4F 4C
-4F 4E 1A 42 CC 1D BA 40 0D 12 00 00 BA 40 87 12
-02 00 A2 52 CC 1D B2 43 BE 1D 30 40 AA 53 00 00
-05 4C 4F 32 48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F
-38 40 C6 1D 39 48 2A 48 09 5A 1A 52 CA 1D 09 9A
-03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D
-30 4D 87 12 00 4A 5E 4A BA 45 44 57 18 4B B0 45
-64 4E 66 57 46 57 29 4E 39 90 86 12 02 20 2E 53
-30 41 39 90 85 12 03 20 1E 4E 02 00 30 41 39 90
-84 12 01 20 2E 52 30 41 19 42 CC 1D A2 53 CC 1D
-89 4E 00 00 3E 40 29 00 12 12 CA 1D 92 53 CA 1D
-87 12 00 4A 18 4B B0 45 96 57 8C 57 21 53 3E 90
-10 00 BE 2D 30 41 98 57 B2 41 CA 1D 22 D3 30 41
-0D 12 87 12 20 46 10 57 AA 57 82 43 C4 1D 92 42
-CC 1D C2 1D A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00
-00 00 34 20 92 53 CA 1D B0 12 32 57 0E 93 04 20
-B2 40 00 03 C4 1D 27 3C 1E 93 04 20 B2 40 10 03
-C4 1D 21 3C 2E 93 04 20 B2 40 20 03 C4 1D 1B 3C
-2E 92 04 20 B2 40 20 02 C4 1D 15 3C 3E 92 04 20
-B2 40 30 02 C4 1D 0F 3C 3E 93 04 20 B2 40 30 03
-C4 1D 09 3C B2 40 30 00 C4 1D 19 42 CC 1D A2 53
-CC 1D 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00
-00 00 08 20 B2 40 10 02 C4 1D 92 53 CA 1D B0 12
-32 57 EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00
-C4 1D 92 53 CA 1D B0 12 78 57 0E 20 B2 50 10 00
-C4 1D 3E 40 2B 00 B0 12 78 57 33 24 92 92 C6 1D
-CA 1D 02 24 92 53 CA 1D 8E 10 82 5E C4 1D D3 3F
-B0 12 78 57 F9 23 B2 50 10 00 C4 1D 3E 40 28 00
-B0 12 32 57 B0 12 68 57 E8 3F 0D 12 87 12 20 46
-10 57 A4 58 FE 90 26 00 00 00 3E 40 20 00 04 20
-B2 50 82 00 C4 1D C1 3F B0 12 78 57 DE 23 B2 50
-80 00 C4 1D 3E 40 28 00 B0 12 32 57 B0 12 68 57
-D4 23 3D 40 64 4E 30 4D 46 48 04 52 45 54 49 00
-0D 12 87 12 2C 44 00 13 24 4C 22 44 2C 44 2C 00
-A0 57 9A 58 F6 58 2E 4E 1E D2 C4 1D 19 42 C2 1D
-90 3F 00 57 03 4D 4F 56 84 12 EC 58 00 40 04 59
-05 4D 4F 56 2E 42 84 12 EC 58 40 40 00 00 03 41
-44 44 84 12 EC 58 00 50 1E 59 05 41 44 44 2E 42
-84 12 EC 58 40 50 2A 59 04 41 44 44 43 00 84 12
-EC 58 00 60 38 59 06 41 44 44 43 2E 42 00 84 12
-EC 58 40 60 DA 58 04 53 55 42 43 00 84 12 EC 58
-00 70 56 59 06 53 55 42 43 2E 42 00 84 12 EC 58
-40 70 64 59 03 53 55 42 84 12 EC 58 00 80 74 59
-05 53 55 42 2E 42 84 12 EC 58 40 80 DC 56 03 43
-4D 50 84 12 EC 58 00 90 8E 59 05 43 4D 50 2E 42
-84 12 EC 58 40 90 CA 56 04 44 41 44 44 00 84 12
-EC 58 00 A0 A8 59 06 44 41 44 44 2E 42 00 84 12
-EC 58 40 A0 9A 59 03 42 49 54 84 12 EC 58 00 B0
-C6 59 05 42 49 54 2E 42 84 12 EC 58 40 B0 D2 59
-03 42 49 43 84 12 EC 58 00 C0 E0 59 05 42 49 43
-2E 42 84 12 EC 58 40 C0 EC 59 03 42 49 53 84 12
-EC 58 00 D0 FA 59 05 42 49 53 2E 42 84 12 EC 58
-40 D0 00 00 03 58 4F 52 84 12 EC 58 00 E0 14 5A
-05 58 4F 52 2E 42 84 12 EC 58 40 E0 46 59 03 41
-4E 44 84 12 EC 58 00 F0 2E 5A 05 41 4E 44 2E 42
-84 12 EC 58 40 F0 20 46 A0 57 4C 5A 1A 42 C4 1D
-B2 F0 70 00 C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D
-4A 3F 80 59 03 52 52 43 84 12 46 5A 00 10 64 5A
-05 52 52 43 2E 42 84 12 46 5A 40 10 70 5A 04 53
-57 50 42 00 84 12 46 5A 80 10 7E 5A 03 52 52 41
-84 12 46 5A 00 11 8C 5A 05 52 52 41 2E 42 84 12
-46 5A 40 11 98 5A 03 53 58 54 84 12 46 5A 80 11
-00 00 04 50 55 53 48 00 84 12 46 5A 00 12 B2 5A
-06 50 55 53 48 2E 42 00 84 12 46 5A 40 12 06 5A
-04 43 41 4C 4C 00 84 12 46 5A 80 12 2C 44 2C 00
-A0 57 9A 58 E6 5A 59 42 C4 1D 5A 42 C5 1D 82 4A
-C4 1D BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A
-0A 49 3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A
-0D 12 87 12 5E 47 7C 49 0D 6F 75 74 20 6F 66 20
-62 6F 75 6E 64 73 C8 4D C0 5A 05 50 55 53 48 4D
-84 12 DC 5A 00 15 2A 5B 04 50 4F 50 4D 00 84 12
-DC 5A 00 17 20 46 10 57 4A 5B 82 43 C4 1D 92 42
-CC 1D C2 1D A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00
-87 12 00 4A 18 4B B0 45 64 4E 9A 58 6E 5B 0A 4E
-3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F A6 5A
-04 52 52 43 4D 00 84 12 44 5B 50 00 80 5B 04 52
-52 41 4D 00 84 12 44 5B 50 01 8E 5B 04 52 4C 41
-4D 00 84 12 44 5B 50 02 9C 5B 04 52 52 55 4D 00
-84 12 44 5B 50 03 85 12 00 3C AA 5B 03 53 3E 3D
-85 12 00 38 BC 5B 02 53 3C 00 85 12 00 34 38 5B
-03 30 3E 3D 85 12 00 30 D0 5B 02 30 3C 00 85 12
-00 30 00 00 02 55 3C 00 85 12 00 2C E4 5B 03 55
-3E 3D 85 12 00 28 DA 5B 03 30 3C 3E 85 12 00 24
-F8 5B 02 30 3D 00 85 12 00 20 52 48 02 49 46 00
-1A 42 CC 1D 8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D
-EE 5B 04 54 48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F
-09 48 29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA
-00 00 30 4D B6 59 04 45 4C 53 45 00 1A 42 CC 1D
-BA 40 00 3C 00 00 A2 53 CC 1D 2F 83 8F 4A 00 00
-E3 3F 22 5C 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F
-19 42 CC 1D 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B
-3A F0 FF 03 08 DA 89 48 00 00 A2 53 CC 1D 30 4D
-3A 5A 05 41 47 41 49 4E 0D 12 87 12 B6 5B 6A 5C
-22 44 00 00 05 57 48 49 4C 45 0D 12 87 12 10 5C
-70 44 22 44 C6 5B 06 52 45 50 45 41 54 00 0D 12
-87 12 B6 5B 6A 5C 28 5C 22 44 CC 5C 3D 41 08 4E
-3E 4F 2A 48 0A 93 04 20 98 42 CC 1D 00 00 30 4D
-88 43 00 00 C3 3F D0 5A 03 42 57 31 84 12 CA 5C
-00 00 E8 5C 03 42 57 32 84 12 CA 5C 00 00 F4 5C
-03 42 57 33 84 12 CA 5C 00 00 0C 5D 3D 41 1A 42
-CC 1D 28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 1D
-8E 4A 00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00
-03 46 57 31 84 12 0A 5D 00 00 30 5D 03 46 57 32
-84 12 0A 5D 00 00 3C 5D 03 46 57 33 84 12 0A 5D
-00 00 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10
-02 24 3E E0 00 08 30 4D 48 5D 04 47 4F 54 4F 00
-0D 12 87 12 B6 5B 54 4E 1A 4C 22 44 00 00 05 3F
-47 4F 54 4F 0D 12 87 12 52 5D 54 4E 1A 4C 22 44
-00 00 03 4A 4D 50 0D 12 87 12 54 4E 98 5C 22 44
-7E 5D 04 3F 4A 4D 50 00 0D 12 87 12 52 5D 54 4E
-70 44 6A 5C 22 44 36 51 07 7B 54 4F 4F 4C 53 7D
-30 4D B6 56 03 41 4E 44 3E FF 30 4D BA 53 02 2E
-53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40
-80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11
-0D 12 87 12 2C 44 3C 00 C6 48 5E 47 2C 44 08 00
-C6 48 2C 44 3E 00 C6 48 FC 48 82 44 82 44 8E 45
-BA 45 1A 5E 5A 44 5A 44 22 44 C0 45 F8 45 EA 44
-26 47 2C 44 02 00 D0 45 1C 5E 22 44 CE 5D 03 2E
-52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F
-BE 4A 01 3F 2E 4E 30 40 26 47 46 54 03 50 41 44
-85 12 E4 1C 02 55 05 57 4F 52 44 53 0D 12 87 12
-78 49 2C 44 03 00 12 49 2C 44 D0 1D EA 44 50 5E
-2C 44 10 00 3C 44 18 45 EA 52 2C 44 00 00 3C 44
-2C 44 10 00 3C 44 18 45 2C 44 00 00 C0 45 3C 44
-F8 45 50 5E 18 45 EA 44 A4 45 B0 45 AC 5E 5A 44
-5A 44 F8 45 3C 44 50 5E 18 45 EA 44 2C 44 02 00
-D0 45 8E 5E 4C 44 B0 45 EE 5E 3C 44 2C 44 02 00
-20 45 EA 44 92 44 50 5E 18 45 F2 44 3C 44 6C 4C
-2C 44 7F 00 C8 5D 34 49 00 45 2C 44 0F 00 C8 5D
-2C 44 10 00 70 44 20 45 12 49 AC 45 7A 5E 5A 44
-22 44 E4 52 03 4D 41 58 2E 9F 07 38 2F 53 30 4D
-F4 5E 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D F8 51
-03 55 2E 52 0D 12 87 12 A8 44 42 46 2C 44 00 00
-A2 46 D4 46 F0 46 B4 44 82 44 20 45 2C 44 00 00
-F8 5E 12 49 34 49 22 44 C8 53 04 44 55 4D 50 00
-0D 12 12 12 E2 1D B2 40 10 00 E2 1D 2E 5F 87 12
-70 44 82 44 82 44 26 47 2C 44 01 00 20 45 26 47
-2C 44 FE FF C8 5D C0 45 78 49 F8 45 2C 44 07 00
-14 5F FC 48 F8 45 2C 44 10 00 18 45 F8 45 C0 45
-F8 45 00 45 2C 44 03 00 14 5F E2 45 80 5F FC 48
-FC 48 F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45
-00 45 2C 44 7E 00 06 5F 20 46 F8 5E C6 48 E2 45
-9E 5F 2C 44 10 00 D0 45 68 5F B4 44 2C 46 F2 44
-22 44
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 90 5D
+06 57 06 5F 64 53 62 56 B0 52 CE 5E FA 5D 18 5E
+68 54 DC 5E 22 5E 00 00 84 5D 5E 4E 0E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 5E 56
+8E 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 8E 5F 0C 18 B2 40
+5E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 D3 04 02 B2 40
+FE FF 02 02 A2 83 06 02 B2 D0 00 42 24 02 B2 D3
+26 02 B2 40 FF BF 22 02 F2 43 22 03 F2 D3 26 03
+F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01
+F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43 66 01
+39 40 00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
+9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
+18 83 FE 23 19 83 FA 23 B2 D2 B0 01 F2 D0 10 00
+2A 03 F2 C0 40 00 A1 04 39 40 34 00 29 83 B9 40
+14 55 CC FF FB 23 B2 40 54 48 F0 FF B2 40 18 00
+0A 18 39 40 00 08 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40
+00 44 34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 2C 56 38 90 0A 00 34 27
+38 90 16 00 31 2F 28 93 0A 23 FF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 5E 5C
+CC 5C 12 5C 36 5D D8 5B 5E 5D F2 58 00 00 CE 5B
+82 5C 30 5C 70 5C 02 5A 00 00 00 00 6E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 3A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 74 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 30 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 3E 56 DA 1D E3 3F 96 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 7C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 18 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 58 57
+00 4B B0 45 44 4E 7A 57 5A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 44 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 B6 57 AC 57 21 53 3E 90
+10 00 84 2D E2 2B B8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 22 57 C8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 44 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 44 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+96 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 96 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 96 57 FA 23 3C 50 10 00 B0 12 7E 57
+EF 3F 0D 12 87 12 20 46 22 57 9C 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+96 57 E5 23 3C 50 80 00 B0 12 7E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 BE 57 92 58 DC 58 2E 4E 0E DC
+09 4B A5 3F F4 56 03 4D 4F 56 84 12 D2 58 00 40
+E6 58 05 4D 4F 56 2E 42 84 12 D2 58 40 40 00 00
+03 41 44 44 84 12 D2 58 00 50 00 59 05 41 44 44
+2E 42 84 12 D2 58 40 50 0C 59 04 41 44 44 43 00
+84 12 D2 58 00 60 1A 59 06 41 44 44 43 2E 42 00
+84 12 D2 58 40 60 C0 58 04 53 55 42 43 00 84 12
+D2 58 00 70 38 59 06 53 55 42 43 2E 42 00 84 12
+D2 58 40 70 46 59 03 53 55 42 84 12 D2 58 00 80
+56 59 05 53 55 42 2E 42 84 12 D2 58 40 80 D0 56
+03 43 4D 50 84 12 D2 58 00 90 70 59 05 43 4D 50
+2E 42 84 12 D2 58 40 90 BE 56 04 44 41 44 44 00
+84 12 D2 58 00 A0 8A 59 06 44 41 44 44 2E 42 00
+84 12 D2 58 40 A0 7C 59 03 42 49 54 84 12 D2 58
+00 B0 A8 59 05 42 49 54 2E 42 84 12 D2 58 40 B0
+B4 59 03 42 49 43 84 12 D2 58 00 C0 C2 59 05 42
+49 43 2E 42 84 12 D2 58 40 C0 CE 59 03 42 49 53
+84 12 D2 58 00 D0 DC 59 05 42 49 53 2E 42 84 12
+D2 58 40 D0 00 00 03 58 4F 52 84 12 D2 58 00 E0
+F6 59 05 58 4F 52 2E 42 84 12 D2 58 40 E0 28 59
+03 41 4E 44 84 12 D2 58 00 F0 10 5A 05 41 4E 44
+2E 42 84 12 D2 58 40 F0 20 46 BE 57 2E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 62 59
+03 52 52 43 84 12 28 5A 00 10 40 5A 05 52 52 43
+2E 42 84 12 28 5A 40 10 4C 5A 04 53 57 50 42 00
+84 12 28 5A 80 10 5A 5A 03 52 52 41 84 12 28 5A
+00 11 68 5A 05 52 52 41 2E 42 84 12 28 5A 40 11
+74 5A 03 53 58 54 84 12 28 5A 80 11 00 00 04 50
+55 53 48 00 84 12 28 5A 00 12 8E 5A 06 50 55 53
+48 2E 42 00 84 12 28 5A 40 12 E8 59 04 43 41 4C
+4C 00 84 12 28 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 22 57 DA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E FA 5A 1B 17 87 12 92 58
+02 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 82 5A
+04 52 52 43 4D 00 84 12 D4 5A 50 00 30 5B 04 52
+52 41 4D 00 84 12 D4 5A 50 01 3E 5B 04 52 4C 41
+4D 00 84 12 D4 5A 50 02 4C 5B 04 52 52 55 4D 00
+84 12 D4 5A 50 03 9C 5A 05 50 55 53 48 4D 84 12
+D4 5A 00 15 68 5B 04 50 4F 50 4D 00 84 12 D4 5A
+00 17 85 12 00 3C 5A 5B 03 53 3E 3D 85 12 00 38
+88 5B 02 53 3C 00 85 12 00 34 76 5B 03 30 3E 3D
+85 12 00 30 9C 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C B0 5B 03 55 3E 3D 85 12
+00 28 A6 5B 03 30 3C 3E 85 12 00 24 C4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+98 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F EE 5B
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1C 5A 05 41
+47 41 49 4E 0D 12 87 12 82 5B 36 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 DC 5B 70 44 22 44
+92 5B 06 52 45 50 45 41 54 00 0D 12 87 12 82 5B
+36 5C F4 5B 22 44 98 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D AC 5A 03 42 57 31 84 12 96 5C E2 1D B4 5C
+03 42 57 32 84 12 96 5C E4 1D C0 5C 03 42 57 33
+84 12 96 5C E6 1D D8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 D6 5C E8 1D FC 5C 03 46 57 32 84 12 D6 5C
+EA 1D 08 5D 03 46 57 33 84 12 D6 5C EC 1D 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D 14 5D 04 47 4F 54 4F 00 0D 12 87 12
+82 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 1E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 64 5C 22 44 4A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 1E 5D 34 4E 70 44 36 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D AA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 E6 5D
+5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
+02 00 D0 45 E8 5D 22 44 9A 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 1C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 1C 5E
+18 45 EA 44 A4 45 B0 45 78 5E 5A 44 5A 44 F8 45
+3C 44 1C 5E 18 45 EA 44 2C 44 02 00 D0 45 5A 5E
+4C 44 B0 45 BA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 1C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+94 5D 24 49 00 45 2C 44 0F 00 94 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 46 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D C0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
+0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
+F0 46 B4 44 82 44 20 45 2C 44 00 00 C4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
+82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
+94 5D C0 45 52 49 F8 45 2C 44 07 00 E0 5E EC 48
+F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
+2C 44 03 00 E0 5E E2 45 4C 5F EC 48 EC 48 F8 45
+2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
+7E 00 D2 5E 20 46 C4 5E B0 48 E2 45 6A 5F 2C 44
+10 00 D0 45 34 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-1A 55
+14 55
 q
index 1a87ef0..d27dd9c 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 48 80 3E 00 24 05 00 18 00 CE 5F 76 56
-2C 48 3E 48 00 00 00 00
+10 00 11 00 00 4A 80 3E 05 00 18 00 8E 5F 5E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,400 +55,396 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 40 49 08 49 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 40 49 08 49 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 3E 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 A4 48 3B 40 6E 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 48 92 B3 DC 05 05 24 18 42 CC 05 38 90
-0A 00 04 20 21 53 39 40 52 48 4D 15 A2 B3 DC 05
-FD 27 B2 40 11 00 CE 05 E2 C3 23 02 30 41 B2 40
-13 00 CE 05 E2 D3 23 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 48 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 CC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05
-FD 27 82 48 CE 05 30 4D 9A 48 2D 83 92 B3 DC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 47 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 47 04 45 4D 49
-54 00 30 40 C4 48 CC 48 04 45 43 48 4F 00 B2 40
-82 48 92 48 82 43 E4 1D 30 4D 5C 47 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 48 92 43 E4 1D 30 4D
-0E 47 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 49 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 49 EF 3F 2C 49 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 47 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 49 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 49 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 48 04 28 43 52 29 00
-0D 12 87 12 88 49 02 0D 0A 00 40 49 22 44 92 47
-02 43 52 00 30 40 70 49 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 49 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E 49 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 49
-82 53 22 00 0D 12 87 12 2C 44 88 49 30 4C B8 49
-2C 44 22 00 0C 4A A6 49 DA 49 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC 48 82 2E 22 00 0D 12 87 12 C4 49 2C 44 40 49
-30 4C 22 44 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 44 34 40 0C 44 30 4D 8C 45 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 4B 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 4B 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 48 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E 4C 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C 44 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 49 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 4C 20 46 0C 4A
-A2 4C 3D 40 AA 4C E1 22 44 3E AC 4C 0A 4E 3E 4F
-3D 40 C2 4C 37 27 3D 40 9C 4C 1A E2 BE 1D B8 27
-B2 23 C4 4C 3E 4F 3D 40 9C 4C BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 4F CC 3F
-1E 4C 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 4C FE 4C B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 45
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 49 05 0D 0A 6F
-6B 20 40 49 D6 47 08 49 96 4C D6 44 68 45 88 49
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 4D
-2C 44 30 FF 74 47 A4 45 88 49 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 4D 38 46 EA 44 B0 45 2A 4D
-88 49 05 0D 0A 20 20 20 AC 45 32 4D F0 47 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 54 16 55
-B2 40 60 48 54 48 B2 40 C4 48 D4 48 B2 40 70 49
-86 49 B2 40 AE 47 D4 47 82 43 FC 5C 82 43 08 5D
-82 43 14 5D 82 43 44 5D 82 43 50 5D 82 43 5C 5D
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 48 B0 12 96 4D A2 B3
-DC 05 FD 27 B2 40 11 00 CE 05 E2 C3 23 02 92 C3
-DC 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 DC 05 F3 23 0D 12 87 12 88 49 04 1B
-5B 37 6D 00 40 49 2C 44 E4 1D EA 44 4C 44 B0 45
-32 4E 88 49 05 6C 69 6E 65 3A 40 49 38 45 26 47
-DE 48 40 49 88 49 04 1B 5B 30 6D 00 40 49 2E 54
-A6 49 84 4D 7E 4D 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 49 2C 44 C8 4D 30 4C 22 44 64 4A 01 27
-0D 12 87 12 20 46 0C 4A 6A 4A B0 45 70 4E 22 44
-CC 4C 3E 46 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 4E 01 5D B2 43 BE 1D
-30 4D 80 4E 83 5B 27 5D 0D 12 87 12 60 4E 2C 44
-2C 44 30 4C 30 4C 22 44 BE 4F 02 00 3E 4F 30 4D
-6A 49 82 49 53 00 0D 12 87 12 38 46 EA 44 B0 45
-CC 4E 98 4E 2C 44 A8 4E 30 4C 22 44 60 4E A8 4E
-22 44 B2 4E 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 49 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 4D 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 46 0C 4A 6A 4A 4C 44 B0 45 70 4E
-68 45 B0 45 32 4F 2C 44 2C 44 30 4C 30 4C 2C 44
-30 4C 30 4C 22 44 82 9F BC 1D 2C 25 0D 12 87 12
-88 49 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 4D 94 4E 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C 44 22 44 30 4C 36 4F 82 4E 22 44 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 4F 01 3A 30 12 6E 4F 0D 12 87 12
-E6 49 20 46 0C 4A 98 4F 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 4A 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 4F BA 40 86 12 FC FF DF 3C 72 4C
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 4F BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 4F 06 43
-52 45 41 54 45 00 B0 12 8C 4F BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 4C 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 50 05 44 45 46 45 52 B0 12 8C 4F BA 40 30 40
-FC FF BA 40 2E 50 FE FF A9 3C FE 4F 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 4F 86 5B
-54 48 45 4E 5D 00 30 4D 7E 50 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 44 01 00 20 46 0C 4A 78 4C
-3C 44 B0 45 FE 50 82 44 82 44 88 49 04 5B 49 46
-5D 00 54 50 BA 45 C0 50 62 49 2E 45 AC 45 F6 50
-82 44 82 44 88 49 06 5B 45 4C 53 45 5D 00 54 50
-BA 45 E4 50 62 49 38 45 3C 44 B0 45 F6 50 2E 45
-AC 45 F6 50 88 49 06 5B 54 48 45 4E 5D 00 54 50
-BA 45 F6 50 38 45 4C 44 BA 45 9A 50 22 44 62 49
-88 49 05 0D 0A 6B 6F 20 40 49 D6 47 86 4C AC 45
-9A 50 8A 50 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 51 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 0C 4A 6A 4A 64 44 5C 45 22 44
-24 51 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 46 0C 4A 6A 4A 64 44 22 44 5C 51 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 4C 06 4D 41 52
-4B 45 52 00 B0 12 8C 4F BA 40 84 12 FC FF BA 40
-5A 51 FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 4E 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 45 00 00
-2E 53 30 4D 32 50 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 49 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C 50 85 42 45 47 49 4E 30 40
-74 47 E6 51 85 55 4E 54 49 4C 39 40 B0 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 4E 85 41 47 41 49 4E 39 40 AC 45 EF 3F
-C8 4F 85 57 48 49 4C 45 0D 12 87 12 AC 51 70 44
-22 44 EC 4E 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 52 EC 51 22 44 C6 51 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 45 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C 51
-84 4C 4F 4F 50 00 39 40 E2 45 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 47 85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F
-80 52 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 45
-00 00 BA 40 AC 45 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 52
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 52 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 50 2C 44 10 00 2C 44
-00 00 C0 45 2C 44 00 00 30 4C E2 45 44 53 74 47
-2C 44 CE 1D 3C 44 EA 44 30 4C F2 44 1E 50 2C 44
-D0 1D F2 44 22 44 5E 4E 05 46 4F 52 54 48 84 12
-5E 53 D0 5D 94 56 46 5F 68 53 7A 56 B4 52 0E 5F
-3A 5E 58 5E 6C 54 1C 5F 62 5E 00 00 C4 5D 8A 4E
-4E 5E 00 00 24 52 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 4F 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 49 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 52 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E 53 CC 53 E0 53 F0 53
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 53 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 53 76 56 CE 5F 44 52 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 54 92 42 0C 18 34 54 EF 3F
-24 54 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 54 92 42 CC 1D 34 54 30 4D 38 54 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 53 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 CC FF FA 23 B0 12 8A 4D
-B2 40 CE 5F 0C 18 B2 40 76 56 0E 18 CA 3F A8 51
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 49 06 0D 1B 5B 37 6D 23 00 40 49 5E 47 88 49
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 49 2C 44 30 FF 74 47 20 45 26 47 88 49 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 4D 86 54 04 57
-41 52 4D 00 30 40 B8 54 F8 51 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A 5C 01 92 D3 04 02
-B2 40 FE FF 02 02 A2 83 06 02 B2 D0 00 42 24 02
-B2 D3 26 02 B2 40 FF BF 22 02 F2 43 22 03 F2 D3
-26 03 F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43
-41 01 F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43
-66 01 39 40 00 01 B2 40 33 00 64 01 D2 43 61 01
-92 D2 9E 01 08 18 A2 93 08 18 01 24 59 07 38 40
-59 14 18 83 FE 23 19 83 FA 23 B2 D2 B0 01 F2 D0
-10 00 2A 03 F2 C0 40 00 A1 04 3A 40 26 55 39 40
-CC FF 89 4A 00 00 29 53 FC 23 92 42 02 18 F0 FF
-B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00 29 53
-39 90 FF 23 FA 2B 31 40 E0 1C 3F 40 80 1C 37 40
-22 44 36 40 B4 44 35 40 00 44 34 40 0C 44 B2 40
-0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42 08 18
-D2 B3 01 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 C0 05 B2 40 11 00 C6 05 B2 40 00 4A C8 05
-F2 D0 03 00 0D 02 92 C3 C0 05 92 D3 DA 05 3D 40
-44 56 38 90 0A 00 2A 27 38 90 16 00 27 2F 28 93
-00 23 F5 26 14 55 96 53 09 41 53 53 45 4D 42 4C
-45 52 84 12 5E 53 9E 5C 0C 5D 52 5C 76 5D 18 5C
-9E 5D 1C 59 00 00 0E 5C C2 5C 70 5C B0 5C 2C 5A
-00 00 00 00 AE 5D 92 53 B0 54 85 48 49 32 4C 4F
-0D 12 87 12 74 47 C0 51 30 4C 82 4E 9C 53 52 56
-22 44 1A 55 04 43 4F 44 45 00 B0 12 8C 4F A2 82
-CC 1D 0D 12 87 12 7E 4F AC 45 8C 56 00 00 07 45
-4E 44 43 4F 44 45 0D 12 87 12 B6 53 36 4F 22 44
-48 56 03 41 53 4D 92 42 E0 1D C0 1D B2 40 56 56
-E0 1D E3 3F AE 56 06 45 4E 44 41 53 4D 00 92 42
-C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
-CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
-CC 1D B2 43 BE 1D 30 40 B6 53 00 00 05 4C 4F 32
-48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D
-39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A
-FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12
-0C 4A 6A 4A BA 45 50 57 24 4B B0 45 70 4E 72 57
-52 57 29 4E 39 90 86 12 02 20 2E 53 30 41 39 90
-85 12 03 20 1E 4E 02 00 30 41 39 90 84 12 01 20
-2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12 0C 4A
-24 4B B0 45 A2 57 98 57 21 53 3E 90 10 00 BE 2D
-30 41 A4 57 B2 41 CA 1D 22 D3 30 41 0D 12 87 12
-20 46 1C 57 B6 57 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20
-92 53 CA 1D B0 12 3E 57 0E 93 04 20 B2 40 00 03
-C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C
-2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20
-B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02
-C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C
-B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20
-B2 40 10 02 C4 1D 92 53 CA 1D B0 12 3E 57 EB 3F
-FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53
-CA 1D B0 12 84 57 0E 20 B2 50 10 00 C4 1D 3E 40
-2B 00 B0 12 84 57 33 24 92 92 C6 1D CA 1D 02 24
-92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 84 57
-F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12 3E 57
-B0 12 74 57 E8 3F 0D 12 87 12 20 46 1C 57 B0 58
-FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50 82 00
-C4 1D C1 3F B0 12 84 57 DE 23 B2 50 80 00 C4 1D
-3E 40 28 00 B0 12 3E 57 B0 12 74 57 D4 23 3D 40
-70 4E 30 4D 4C 48 04 52 45 54 49 00 0D 12 87 12
-2C 44 00 13 30 4C 22 44 2C 44 2C 00 AC 57 A6 58
-02 59 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F 0C 57
-03 4D 4F 56 84 12 F8 58 00 40 10 59 05 4D 4F 56
-2E 42 84 12 F8 58 40 40 00 00 03 41 44 44 84 12
-F8 58 00 50 2A 59 05 41 44 44 2E 42 84 12 F8 58
-40 50 36 59 04 41 44 44 43 00 84 12 F8 58 00 60
-44 59 06 41 44 44 43 2E 42 00 84 12 F8 58 40 60
-E6 58 04 53 55 42 43 00 84 12 F8 58 00 70 62 59
-06 53 55 42 43 2E 42 00 84 12 F8 58 40 70 70 59
-03 53 55 42 84 12 F8 58 00 80 80 59 05 53 55 42
-2E 42 84 12 F8 58 40 80 E8 56 03 43 4D 50 84 12
-F8 58 00 90 9A 59 05 43 4D 50 2E 42 84 12 F8 58
-40 90 D6 56 04 44 41 44 44 00 84 12 F8 58 00 A0
-B4 59 06 44 41 44 44 2E 42 00 84 12 F8 58 40 A0
-A6 59 03 42 49 54 84 12 F8 58 00 B0 D2 59 05 42
-49 54 2E 42 84 12 F8 58 40 B0 DE 59 03 42 49 43
-84 12 F8 58 00 C0 EC 59 05 42 49 43 2E 42 84 12
-F8 58 40 C0 F8 59 03 42 49 53 84 12 F8 58 00 D0
-06 5A 05 42 49 53 2E 42 84 12 F8 58 40 D0 00 00
-03 58 4F 52 84 12 F8 58 00 E0 20 5A 05 58 4F 52
-2E 42 84 12 F8 58 40 E0 52 59 03 41 4E 44 84 12
-F8 58 00 F0 3A 5A 05 41 4E 44 2E 42 84 12 F8 58
-40 F0 20 46 AC 57 58 5A 1A 42 C4 1D B2 F0 70 00
-C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F 8C 59
-03 52 52 43 84 12 52 5A 00 10 70 5A 05 52 52 43
-2E 42 84 12 52 5A 40 10 7C 5A 04 53 57 50 42 00
-84 12 52 5A 80 10 8A 5A 03 52 52 41 84 12 52 5A
-00 11 98 5A 05 52 52 41 2E 42 84 12 52 5A 40 11
-A4 5A 03 53 58 54 84 12 52 5A 80 11 00 00 04 50
-55 53 48 00 84 12 52 5A 00 12 BE 5A 06 50 55 53
-48 2E 42 00 84 12 52 5A 40 12 12 5A 04 43 41 4C
-4C 00 84 12 52 5A 80 12 2C 44 2C 00 AC 57 A6 58
-F2 5A 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90
-00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90
-10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12
-5E 47 88 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
-64 73 D4 4D CC 5A 05 50 55 53 48 4D 84 12 E8 5A
-00 15 36 5B 04 50 4F 50 4D 00 84 12 E8 5A 00 17
-20 46 1C 57 56 5B 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 0C 4A
-24 4B B0 45 70 4E A6 58 7A 5B 0A 4E 3E 4F 1A 83
-2A 92 CA 2F 8A 10 5A 06 6F 3F B2 5A 04 52 52 43
-4D 00 84 12 50 5B 50 00 8C 5B 04 52 52 41 4D 00
-84 12 50 5B 50 01 9A 5B 04 52 4C 41 4D 00 84 12
-50 5B 50 02 A8 5B 04 52 52 55 4D 00 84 12 50 5B
-50 03 85 12 00 3C B6 5B 03 53 3E 3D 85 12 00 38
-C8 5B 02 53 3C 00 85 12 00 34 44 5B 03 30 3E 3D
-85 12 00 30 DC 5B 02 30 3C 00 85 12 00 30 00 00
-02 55 3C 00 85 12 00 2C F0 5B 03 55 3E 3D 85 12
-00 28 E6 5B 03 30 3C 3E 85 12 00 24 04 5C 02 30
-3D 00 85 12 00 20 58 48 02 49 46 00 1A 42 CC 1D
-8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D FA 5B 04 54
-48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53
-0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D
-C2 59 04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C
-00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 2E 5C
-05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D
-2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03
-08 DA 89 48 00 00 A2 53 CC 1D 30 4D 46 5A 05 41
-47 41 49 4E 0D 12 87 12 C2 5B 76 5C 22 44 00 00
-05 57 48 49 4C 45 0D 12 87 12 1C 5C 70 44 22 44
-D2 5B 06 52 45 50 45 41 54 00 0D 12 87 12 C2 5B
-76 5C 34 5C 22 44 D8 5C 3D 41 08 4E 3E 4F 2A 48
-0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00
-C3 3F DC 5A 03 42 57 31 84 12 D6 5C 00 00 F4 5C
-03 42 57 32 84 12 D6 5C 00 00 00 5D 03 42 57 33
-84 12 D6 5C 00 00 18 5D 3D 41 1A 42 CC 1D 28 4E
-08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00
-3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31
-84 12 16 5D 00 00 3C 5D 03 46 57 32 84 12 16 5D
-00 00 48 5D 03 46 57 33 84 12 16 5D 00 00 3E 90
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 DC 05
+05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
+E2 C3 23 02 30 41 B2 40 13 00 CE 05 E2 D3 23 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 CC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 DC 05 FD 27
+82 48 CE 05 30 4D 88 48 2D 83 92 B3 DC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C3
+23 02 92 C3 DC 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 90 5D
+06 57 06 5F 64 53 62 56 B0 52 CE 5E FA 5D 18 5E
+68 54 DC 5E 22 5E 00 00 84 5D 5E 4E 0E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 5E 56
+8E 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 8E 5F 0C 18 B2 40
+5E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 D3 04 02 B2 40
+FE FF 02 02 A2 83 06 02 B2 D0 00 42 24 02 B2 D3
+26 02 B2 40 FF BF 22 02 F2 43 22 03 F2 D3 26 03
+F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01
+F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43 66 01
+39 40 00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
+9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
+18 83 FE 23 19 83 FA 23 B2 D2 B0 01 F2 D0 10 00
+2A 03 F2 C0 40 00 A1 04 39 40 34 00 29 83 B9 40
+14 55 CC FF FB 23 B2 40 54 48 F0 FF B2 40 18 00
+0A 18 39 40 00 08 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40
+00 44 34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 2C 56 38 90 0A 00 34 27
+38 90 16 00 31 2F 28 93 0A 23 FF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 5E 5C
+CC 5C 12 5C 36 5D D8 5B 5E 5D F2 58 00 00 CE 5B
+82 5C 30 5C 70 5C 02 5A 00 00 00 00 6E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 3A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 74 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 30 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 3E 56 DA 1D E3 3F 96 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 7C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 18 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 58 57
+00 4B B0 45 44 4E 7A 57 5A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 44 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 B6 57 AC 57 21 53 3E 90
+10 00 84 2D E2 2B B8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 22 57 C8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 44 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 44 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+96 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 96 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 96 57 FA 23 3C 50 10 00 B0 12 7E 57
+EF 3F 0D 12 87 12 20 46 22 57 9C 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+96 57 E5 23 3C 50 80 00 B0 12 7E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 BE 57 92 58 DC 58 2E 4E 0E DC
+09 4B A5 3F F4 56 03 4D 4F 56 84 12 D2 58 00 40
+E6 58 05 4D 4F 56 2E 42 84 12 D2 58 40 40 00 00
+03 41 44 44 84 12 D2 58 00 50 00 59 05 41 44 44
+2E 42 84 12 D2 58 40 50 0C 59 04 41 44 44 43 00
+84 12 D2 58 00 60 1A 59 06 41 44 44 43 2E 42 00
+84 12 D2 58 40 60 C0 58 04 53 55 42 43 00 84 12
+D2 58 00 70 38 59 06 53 55 42 43 2E 42 00 84 12
+D2 58 40 70 46 59 03 53 55 42 84 12 D2 58 00 80
+56 59 05 53 55 42 2E 42 84 12 D2 58 40 80 D0 56
+03 43 4D 50 84 12 D2 58 00 90 70 59 05 43 4D 50
+2E 42 84 12 D2 58 40 90 BE 56 04 44 41 44 44 00
+84 12 D2 58 00 A0 8A 59 06 44 41 44 44 2E 42 00
+84 12 D2 58 40 A0 7C 59 03 42 49 54 84 12 D2 58
+00 B0 A8 59 05 42 49 54 2E 42 84 12 D2 58 40 B0
+B4 59 03 42 49 43 84 12 D2 58 00 C0 C2 59 05 42
+49 43 2E 42 84 12 D2 58 40 C0 CE 59 03 42 49 53
+84 12 D2 58 00 D0 DC 59 05 42 49 53 2E 42 84 12
+D2 58 40 D0 00 00 03 58 4F 52 84 12 D2 58 00 E0
+F6 59 05 58 4F 52 2E 42 84 12 D2 58 40 E0 28 59
+03 41 4E 44 84 12 D2 58 00 F0 10 5A 05 41 4E 44
+2E 42 84 12 D2 58 40 F0 20 46 BE 57 2E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 62 59
+03 52 52 43 84 12 28 5A 00 10 40 5A 05 52 52 43
+2E 42 84 12 28 5A 40 10 4C 5A 04 53 57 50 42 00
+84 12 28 5A 80 10 5A 5A 03 52 52 41 84 12 28 5A
+00 11 68 5A 05 52 52 41 2E 42 84 12 28 5A 40 11
+74 5A 03 53 58 54 84 12 28 5A 80 11 00 00 04 50
+55 53 48 00 84 12 28 5A 00 12 8E 5A 06 50 55 53
+48 2E 42 00 84 12 28 5A 40 12 E8 59 04 43 41 4C
+4C 00 84 12 28 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 22 57 DA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E FA 5A 1B 17 87 12 92 58
+02 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F 82 5A
+04 52 52 43 4D 00 84 12 D4 5A 50 00 30 5B 04 52
+52 41 4D 00 84 12 D4 5A 50 01 3E 5B 04 52 4C 41
+4D 00 84 12 D4 5A 50 02 4C 5B 04 52 52 55 4D 00
+84 12 D4 5A 50 03 9C 5A 05 50 55 53 48 4D 84 12
+D4 5A 00 15 68 5B 04 50 4F 50 4D 00 84 12 D4 5A
+00 17 85 12 00 3C 5A 5B 03 53 3E 3D 85 12 00 38
+88 5B 02 53 3C 00 85 12 00 34 76 5B 03 30 3E 3D
+85 12 00 30 9C 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C B0 5B 03 55 3E 3D 85 12
+00 28 A6 5B 03 30 3C 3E 85 12 00 24 C4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D BA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+98 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F EE 5B
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 1C 5A 05 41
+47 41 49 4E 0D 12 87 12 82 5B 36 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 DC 5B 70 44 22 44
+92 5B 06 52 45 50 45 41 54 00 0D 12 87 12 82 5B
+36 5C F4 5B 22 44 98 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D AC 5A 03 42 57 31 84 12 96 5C E2 1D B4 5C
+03 42 57 32 84 12 96 5C E4 1D C0 5C 03 42 57 33
+84 12 96 5C E6 1D D8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 D6 5C E8 1D FC 5C 03 46 57 32 84 12 D6 5C
+EA 1D 08 5D 03 46 57 33 84 12 D6 5C EC 1D 3E 90
 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
-00 08 30 4D 54 5D 04 47 4F 54 4F 00 0D 12 87 12
-C2 5B 60 4E 26 4C 22 44 00 00 05 3F 47 4F 54 4F
-0D 12 87 12 5E 5D 60 4E 26 4C 22 44 00 00 03 4A
-4D 50 0D 12 87 12 60 4E A4 5C 22 44 8A 5D 04 3F
-4A 4D 50 00 0D 12 87 12 5E 5D 60 4E 70 44 76 5C
-22 44 42 51 07 7B 54 4F 4F 4C 53 7D 30 4D C2 56
-03 41 4E 44 3E FF 30 4D C6 53 02 2E 53 00 8F 4E
+00 08 30 4D 14 5D 04 47 4F 54 4F 00 0D 12 87 12
+82 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 1E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 64 5C 22 44 4A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 1E 5D 34 4E 70 44 36 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D AA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
 FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
-2C 44 3C 00 D2 48 5E 47 2C 44 08 00 D2 48 2C 44
-3E 00 D2 48 08 49 82 44 82 44 8E 45 BA 45 26 5E
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 E6 5D
 5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
-02 00 D0 45 28 5E 22 44 DA 5D 03 2E 52 53 8F 4E
-FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F CA 4A 01 3F
-2E 4E 30 40 26 47 52 54 03 50 41 44 85 12 E4 1C
-0E 55 05 57 4F 52 44 53 0D 12 87 12 84 49 2C 44
-03 00 1E 49 2C 44 D0 1D EA 44 5C 5E 2C 44 10 00
-3C 44 18 45 F6 52 2C 44 00 00 3C 44 2C 44 10 00
-3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 5C 5E
-18 45 EA 44 A4 45 B0 45 B8 5E 5A 44 5A 44 F8 45
-3C 44 5C 5E 18 45 EA 44 2C 44 02 00 D0 45 9A 5E
-4C 44 B0 45 FA 5E 3C 44 2C 44 02 00 20 45 EA 44
-92 44 5C 5E 18 45 F2 44 3C 44 78 4C 2C 44 7F 00
-D4 5D 40 49 00 45 2C 44 0F 00 D4 5D 2C 44 10 00
-70 44 20 45 1E 49 AC 45 86 5E 5A 44 22 44 F0 52
-03 4D 41 58 2E 9F 07 38 2F 53 30 4D 00 5F 03 4D
-49 4E 2E 9F F9 3B 3E 4F 30 4D 04 52 03 55 2E 52
+02 00 D0 45 E8 5D 22 44 9A 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 1C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 1C 5E
+18 45 EA 44 A4 45 B0 45 78 5E 5A 44 5A 44 F8 45
+3C 44 1C 5E 18 45 EA 44 2C 44 02 00 D0 45 5A 5E
+4C 44 B0 45 BA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 1C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+94 5D 24 49 00 45 2C 44 0F 00 94 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 46 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D C0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
 0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
-F0 46 B4 44 82 44 20 45 2C 44 00 00 04 5F 1E 49
-40 49 22 44 D4 53 04 44 55 4D 50 00 0D 12 12 12
-E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 44 82 44
+F0 46 B4 44 82 44 20 45 2C 44 00 00 C4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
 82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
-D4 5D C0 45 84 49 F8 45 2C 44 07 00 20 5F 08 49
+94 5D C0 45 52 49 F8 45 2C 44 07 00 E0 5E EC 48
 F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
-2C 44 03 00 20 5F E2 45 8C 5F 08 49 08 49 F8 45
+2C 44 03 00 E0 5E E2 45 4C 5F EC 48 EC 48 F8 45
 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
-7E 00 12 5F 20 46 04 5F D2 48 E2 45 AA 5F 2C 44
-10 00 D0 45 74 5F B4 44 2C 46 F2 44 22 44
+7E 00 D2 5E 20 46 C4 5E B0 48 E2 45 6A 5F 2C 44
+10 00 D0 45 34 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-26 55
+14 55
 q
diff --git a/MSP_EXP430FR5994.txt b/MSP_EXP430FR5994.txt
new file mode 100644 (file)
index 0000000..3ac6b0b
--- /dev/null
@@ -0,0 +1,640 @@
+@1800
+10 00 03 00 00 21 80 3E 05 00 18 00 64 67 0E 54
+90 44 A2 44 C6 5B 02 5C 00 00
+@2000
+00 00
+@4000
+2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
+00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
+54 00 3D 41 30 4D 00 00 03 4C 49 54 2F 83 8F 4E
+00 00 3E 4D 30 4D 1C 40 03 44 55 50 2F 83 8F 4E
+00 00 30 4D 00 00 04 3F 44 55 50 00 0E 93 F6 23
+30 4D 38 40 04 44 52 4F 50 00 3E 4F 30 4D 00 00
+03 4E 49 50 2F 53 30 4D 00 00 04 53 57 41 50 00
+2A 4F 8F 4E 00 00 0E 4A 30 4D 60 40 04 4F 56 45
+52 00 8F 4E FE FF 2E 4F 2F 83 30 4D 6A 40 03 52
+4F 54 2A 4F 8F 4E 00 00 1E 4F 02 00 8F 4A 02 00
+30 4D 46 40 02 3E 52 00 0E 12 3E 4F 30 4D 8E 40
+02 52 3E 00 2F 83 8F 4E 00 00 3E 41 30 4D B0 40
+02 52 40 00 2F 83 8F 4E 00 00 2E 41 30 4D 54 40
+05 44 45 50 54 48 8F 4E FE FF 3E 40 80 1C 0E 8F
+2F 83 0E 11 30 4D 00 00 01 40 2E 4E 30 4D E8 40
+01 21 BE 4F 00 00 3E 4F 30 4D 00 00 02 43 40 00
+6E 4E 30 4D FC 40 02 43 21 00 FE 4F 00 00 1F 53
+3E 4F 30 4D 00 00 01 2B 3E 5F 30 4D 28 40 01 2D
+3E 8F 3E E3 1E 53 30 4D 00 00 02 31 2B 00 1E 53
+30 4D 2A 41 02 31 2D 00 1E 83 30 4D D0 40 04 44
+41 42 53 00 3E F3 06 34 BF E3 00 00 3E E3 9F 53
+00 00 0E 63 30 4D 34 41 02 30 3D 00 1E 83 0E 7E
+30 4D 58 41 02 30 3C 00 0E 5E 0E 7E 3E E3 30 4D
+00 00 01 3D 3E 8F 07 20 3E 43 30 4D 72 41 01 3C
+3A 4F 0A 8E F9 3B 0E 43 30 4D A4 40 01 3E 3E 8F
+F9 3F 64 41 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
+02 55 3C 00 3A 4F 0A 8E E7 2B ED 3F 2D 4D 30 4D
+0E 93 3E 4F FB 27 2D 53 30 4D 1E 83 0E 7E F9 3F
+39 40 00 80 39 8F 08 4E 3E 4F 08 59 19 15 30 4D
+81 5E 00 00 3E 4F 32 B0 00 01 E8 27 2D 53 21 52
+30 4D 91 53 00 00 F7 3F A0 41 06 55 4E 4C 4F 4F
+50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
+1E 81 02 00 30 4D 16 41 01 4A 2F 83 8F 4E 00 00
+1E 41 04 00 1E 81 06 00 30 4D 06 41 02 42 4C 00
+85 12 20 00 1C 42 04 42 41 53 45 00 85 12 DC 1D
+C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
+23 00 B2 40 B2 1D B2 1D 30 4D EA 41 06 55 4D 2F
+4D 4F 44 00 30 12 5A 40 0B 4E 2E 4F 1C 4F 02 00
+0A 43 34 40 20 00 0E 93 04 20 04 11 0E 4C 0C 43
+09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
+0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
+0C 40 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 42
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
+00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
+92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 42
+02 23 53 00 0D 12 87 12 A2 42 DC 42 2D 83 09 93
+E2 23 0E 93 E0 23 3D 41 30 4D D0 42 02 23 3E 00
+9F 42 B2 1D 00 00 3E 40 B2 1D 2E 8F 30 4D F6 41
+04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 42 04 53
+49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
+4C 42 02 55 2E 00 0D 12 87 12 42 42 2C 40 00 00
+D4 42 F0 42 90 45 58 45 22 40 3E 41 02 44 2E 00
+0D 12 87 12 42 42 70 40 82 40 44 41 D4 42 92 40
+14 43 F0 42 90 45 58 45 22 40 7C 40 01 2E 0E 93
+E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 43 04 48
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 40 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 42 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 42 03 4B 45 59 30 40 B0 43
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 90 44 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 A2 44 30 4D 0D 12
+3D 40 EE 43 1B 42 32 20 9B 42 1E 20 16 00 1A 4F
+02 00 8F 4E 00 00 0E 43 19 42 1E 20 02 3C F0 43
+2D 83 19 92 20 20 15 2C 58 49 00 1E 19 53 78 90
+20 00 08 2C 78 90 0A 00 F4 23 82 49 1E 20 2F 53
+3D 41 30 4D 2E 9F 67 24 CA 48 00 00 1A 53 1E 53
+62 3C 0A 12 B0 12 08 5D 3A 41 DE 3F 92 43 03 43
+49 42 85 12 3C 1D 3F 80 06 00 8F 4E 04 00 3E 40
+54 00 9F 42 34 44 00 00 AF 4F 02 00 05 3C 82 43
+06 41 43 43 45 50 54 00 30 40 5C 44 3C 40 FE 44
+3B 40 C8 44 2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00
+3C 40 20 00 3D 40 F2 44 92 B3 DC 05 05 24 18 42
+CC 05 38 90 0A 00 04 20 21 53 39 40 B6 44 4D 15
+A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 23 02
+30 41 B2 40 13 00 CE 05 E2 D2 23 02 30 41 00 00
+05 53 4C 45 45 50 30 40 BA 44 12 D2 0A 18 FB 3F
+21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E9 27
+78 92 11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24
+CE 48 00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05
+30 4D F4 44 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40
+18 00 0A 18 82 93 DE 1D 02 24 92 53 DE 1D 3E 8F
+3D 41 30 4D 3C 43 04 45 4D 49 54 00 30 40 20 45
+08 4E 3E 4F E0 3F 16 45 04 45 43 48 4F 00 B2 40
+82 48 EC 44 82 43 DE 1D 30 4D 5C 43 06 4E 4F 45
+43 48 4F 00 B2 40 30 4D EC 44 92 43 DE 1D 30 4D
+0E 43 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
+20 00 DC 3F 52 45 06 53 50 41 43 45 53 00 0E 93
+09 24 0D 12 3D 40 7A 45 EF 3F 7C 45 2D 83 1E 83
+EB 23 3D 41 3E 4F 30 4D 22 43 04 54 59 50 45 00
+0E 93 0F 24 1E 15 3D 40 A6 45 28 4F 7E 48 8F 48
+00 00 2F 83 BB 3F A8 45 2D 83 91 83 02 00 F5 23
+1D 17 2F 53 3E 4F 30 4D 2E 44 02 43 52 00 30 40
+C2 45 0D 12 87 12 D0 45 02 0D 0A 00 90 45 22 40
+2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3
+0D 63 30 4D BA 45 07 43 41 50 53 5F 4F 4E B2 43
+B4 1D 30 4D E6 45 08 43 41 50 53 5F 4F 46 46 00
+82 43 B4 1D 30 4D 66 45 82 53 22 00 0D 12 87 12
+2C 40 D0 45 78 48 00 46 2C 40 22 00 54 46 EE 45
+22 46 3D 41 6E 4E 1E 83 82 5E C6 1D 3E 4F 92 B3
+C6 1D A2 63 C6 1D 30 4D 3C 45 82 2E 22 00 0D 12
+87 12 0C 46 2C 40 90 45 78 48 22 40 00 00 04 57
+4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C 09 5A 3A 5C
+28 4C 09 9A 1C 24 7E 9A FC 27 1A 83 3B 40 60 00
+C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53
+4B 9C F6 2F 82 93 B4 1D F3 27 7C 90 7B 00 F0 2F
+7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A C4 1D 1E 42
+C6 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
+44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 CA 1D
+3E 4B 0E 93 1E 24 58 4C 01 00 78 F0 1E 00 0E 58
+2E 53 1E 4E FE FF 0E 93 F3 27 09 4E 78 49 48 C4
+48 95 F7 23 0A 4C 1A 53 FA 99 00 00 F2 23 58 83
+FA 23 19 B3 09 63 0C 49 6A 4E 1E 43 4A 93 01 30
+2E 83 8F 4C 00 00 35 40 00 40 34 40 0C 40 30 4D
+8C 41 07 3E 4E 55 4D 42 45 52 3C 4F 38 4F 29 4F
+2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00 7A 90 0A 00
+05 28 7A 80 07 00 7A 90 0A 00 13 28 0A 9B 11 2C
+82 49 D0 04 82 48 D2 04 82 4B C8 04 19 42 E4 04
+18 42 E6 04 09 5A 08 63 1C 53 1E 83 E4 23 8F 48
+02 00 8F 4C 00 00 8F 49 04 00 30 4D 0C 43 1B 42
+DC 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 BC 47
+3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00
+10 2C 5A 83 2B 43 7A 52 07 24 3B 52 6A 53 04 24
+3B 40 10 00 5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80
+2C 00 5A 93 B8 23 B1 43 02 00 CE 3F BE 47 0E 93
+32 24 32 B0 00 02 2F 20 32 D0 00 02 FC 90 2E 00
+00 00 02 20 2D 83 C0 3F FC 90 2C 00 00 00 23 20
+0A 4E 09 43 8F 49 02 00 5A 83 09 4A 09 5C 69 49
+39 80 30 00 79 90 0A 00 05 28 79 80 07 00 79 90
+0A 00 0A 28 09 9B 08 2C 8F 49 00 00 0E 4B 2C 15
+B0 12 58 42 2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F
+04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B DC 1D 04 24
+3F 50 06 00 0E F3 30 4D 2F 53 9F 4F 02 00 04 00
+BF 4F 00 00 3E E3 09 20 3E E3 BF E3 02 00 BF E3
+00 00 9F 53 02 00 8F 63 00 00 32 B0 00 02 01 20
+2F 53 30 4D 28 45 07 45 58 45 43 55 54 45 0A 4E
+3E 4F 00 4A 1E 41 01 2C 1A 42 C6 1D A2 53 C6 1D
+8A 4E 00 00 3E 4F 30 4D 76 48 87 4C 49 54 45 52
+41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D A2 52 C6 1D
+BA 40 2C 40 00 00 8A 4E 02 00 3E 4F 32 B0 00 02
+32 C0 00 02 F1 23 30 4D F6 45 05 43 4F 55 4E 54
+2F 83 1E 53 8F 4E 00 00 5E 4E FF FF 30 4D 82 43
+C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F 30 4D 0D 12
+87 12 CE 48 20 42 54 46 EA 48 3D 40 F2 48 E1 22
+48 3E F4 48 0A 4E 3E 4F 3D 40 0A 49 37 27 3D 40
+E4 48 1A E2 BE 1D B8 27 B2 23 0C 49 3E 4F 3D 40
+E4 48 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
+00 00 3D 40 AE 4B CC 3F 66 48 08 45 56 41 4C 55
+41 54 45 00 39 40 C0 1D 3C 49 3B 49 3A 49 3D 15
+87 12 DE 48 46 49 B2 41 C4 1D B2 41 C2 1D B2 41
+C0 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
+E0 1C B2 40 00 1C 00 1C 82 43 BE 1D 82 43 08 18
+87 12 D0 45 05 0D 0A 6F 6B 20 90 45 36 44 58 45
+DE 48 D6 40 68 41 D0 45 0D 73 74 61 63 6B 20 65
+6D 70 74 79 21 20 14 4A 2C 40 30 FF 74 43 A4 41
+D0 45 0B 46 52 41 4D 20 66 75 6C 6C 21 20 14 4A
+38 42 EA 40 B0 41 72 49 D0 45 05 0D 0A 20 20 20
+AC 41 7A 49 50 44 05 41 42 4F 52 54 3F 40 80 1C
+C6 3F B2 40 18 51 16 51 B2 40 BA 44 B8 44 B2 40
+20 45 1E 45 B2 40 C2 45 C0 45 B2 40 B0 43 AE 43
+B2 40 3C 1D 34 44 B2 40 5C 44 5A 44 38 40 0A 00
+82 48 DC 1D 88 43 E8 1D 28 83 FC 2F B2 40 0A 00
+DC 1D 30 41 8F 93 02 00 03 20 2F 52 3E 4F 30 4D
+B2 40 82 48 EC 44 1B 42 32 20 0B 93 04 24 CB 43
+02 00 2B 4B FA 3F B0 12 DE 49 A2 B3 DC 05 FD 27
+B2 40 11 00 CE 05 E2 C2 23 02 92 C3 DC 05 38 40
+A0 AA 39 42 03 43 19 83 FD 23 18 83 FA 23 92 B3
+DC 05 F3 23 0D 12 87 12 D0 45 04 1B 5B 37 6D 00
+90 45 2C 40 DE 1D EA 40 4C 40 B0 41 8E 4A D0 45
+05 6C 69 6E 65 3A 90 45 38 41 26 43 2E 45 90 45
+D0 45 04 1B 5B 30 6D 00 90 45 90 50 EE 45 CC 49
+C6 49 86 41 42 4F 52 54 22 00 0D 12 87 12 0C 46
+2C 40 14 4A 78 48 22 40 AC 46 01 27 0D 12 87 12
+20 42 54 46 B2 46 B0 41 CC 4A 22 40 14 49 3E 42
+81 5C 92 42 C0 1D C4 1D 30 4D 00 00 81 5B 82 43
+BE 1D 30 4D D0 4A 01 5D B2 43 BE 1D 30 4D DC 4A
+83 5B 27 5D 0D 12 87 12 BC 4A 2C 40 2C 40 78 48
+78 48 22 40 BE 4F 02 00 3E 4F 30 4D 6E 43 82 49
+53 00 0D 12 87 12 38 42 EA 40 B0 41 28 4B F4 4A
+2C 40 04 4B 78 48 22 40 BC 4A 04 4B 22 40 0E 4B
+09 49 4D 4D 45 44 49 41 54 45 1A 42 B6 1D FA D0
+80 00 00 00 30 4D 08 46 87 52 45 43 55 52 53 45
+19 42 C6 1D 99 42 BA 1D 00 00 A2 53 C6 1D 30 4D
+58 49 88 50 4F 53 54 50 4F 4E 45 00 0D 12 87 12
+20 42 54 46 B2 46 4C 40 B0 41 CC 4A 68 41 B0 41
+8E 4B 2C 40 2C 40 78 48 78 48 2C 40 78 48 78 48
+22 40 82 9F BC 1D 2F 25 0D 12 87 12 D0 45 0F 73
+74 61 63 6B 20 6D 69 73 6D 61 74 63 68 21 20 4A
+F0 4A 81 3B 82 93 BE 1D 8C 27 0D 12 87 12 2C 40
+22 40 78 48 92 4B DE 4A 22 40 BA 40 0D 12 FC FF
+BA 40 87 12 FE FF B2 43 BE 1D 82 4F BC 1D 30 4D
+B2 4B 01 3A 30 12 CA 4B 0D 12 87 12 2E 46 20 42
+54 46 F4 4B 08 4E 7A 4E 5A D3 5A 53 0A 58 19 42
+DA 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F 3D 41 BA 40
+30 40 00 00 BA 40 DE 4B 02 00 82 48 B6 1D 82 49
+B8 1D 82 4A BA 1D 2A 52 82 4A C6 1D 30 41 4E 46
+08 56 41 52 49 41 42 4C 45 00 B0 12 E8 4B BA 40
+86 12 FC FF DC 3C BA 48 08 43 4F 4E 53 54 41 4E
+54 00 B0 12 E8 4B BA 40 85 12 FC FF 8A 4E FE FF
+3E 4F CD 3C 48 4C 06 43 52 45 41 54 45 00 B0 12
+E8 4B BA 40 85 12 FC FF 8A 4A FE FF C0 3C 2A 49
+05 44 4F 45 53 3E 1A 42 BA 1D BA 40 84 12 00 00
+8A 4D 02 00 3D 41 30 4D 80 4C 05 44 45 46 45 52
+B0 12 E8 4B AC 3C 12 47 05 3E 42 4F 44 59 2E 52
+30 4D 66 4C 07 43 4F 4D 50 41 52 45 0C 4E 38 4F
+3B 4F 39 4F 0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83
+07 30 19 53 F9 98 FF FF F5 27 02 2C 3E 43 30 4D
+1E 43 30 4D E2 4B 86 5B 54 48 45 4E 5D 00 30 4D
+E6 4C 86 5B 45 4C 53 45 5D 00 0D 12 87 12 2C 40
+01 00 20 42 54 46 C0 48 3C 40 B0 41 66 4D 82 40
+82 40 D0 45 04 5B 49 46 5D 00 BC 4C BA 41 28 4D
+B2 45 2E 41 AC 41 5E 4D 82 40 82 40 D0 45 06 5B
+45 4C 53 45 5D 00 BC 4C BA 41 4C 4D B2 45 38 41
+3C 40 B0 41 5E 4D 2E 41 AC 41 5E 4D D0 45 06 5B
+54 48 45 4E 5D 00 BC 4C BA 41 5E 4D 38 41 4C 40
+BA 41 02 4D 22 40 B2 45 D0 45 05 0D 0A 6B 6F 20
+90 45 36 44 CE 48 AC 41 02 4D F2 4C 84 5B 49 46
+5D 00 0E 93 3E 4F B9 27 30 4D 7C 4D 89 5B 44 45
+46 49 4E 45 44 5D 0D 12 87 12 20 42 54 46 B2 46
+64 40 22 40 8C 4D 8B 5B 55 4E 44 45 46 49 4E 45
+44 5D 0D 12 87 12 96 4D 5C 41 22 40 BE 4D 3D 41
+B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 8A 48 06 4D
+41 52 4B 45 52 00 B0 12 E8 4B BA 40 84 12 FC FF
+BA 40 BC 4D FE FF 9A 42 C8 1D 00 00 28 83 8A 48
+02 00 A2 52 C6 1D 18 42 B6 1D 19 42 B8 1D A8 49
+FE FF 89 48 00 00 30 4D 30 4B 82 49 46 00 2F 83
+8F 4E 00 00 1E 42 C6 1D A2 52 C6 1D BE 40 B0 41
+00 00 2E 53 30 4D 9A 4C 84 45 4C 53 45 00 A2 52
+C6 1D 1A 42 C6 1D BA 40 AC 41 FC FF 8E 4A 00 00
+2A 83 0E 4A 30 4D 8A 45 84 54 48 45 4E 00 9E 42
+C6 1D 00 00 3E 4F 30 4D B4 4C 85 42 45 47 49 4E
+30 40 74 43 48 4E 85 55 4E 54 49 4C 39 40 B0 41
+A2 52 C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E FE FF
+3E 4F 30 4D A2 4A 85 41 47 41 49 4E 39 40 AC 41
+EF 3F 30 4C 85 57 48 49 4C 45 0D 12 87 12 0E 4E
+70 40 22 40 48 4B 86 52 45 50 45 41 54 00 0D 12
+87 12 8C 4E 4E 4E 22 40 28 4E 82 44 4F 00 2F 83
+8F 4E 00 00 A2 53 C6 1D 1E 42 C6 1D BE 40 C0 41
+FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D
+CE 4D 84 4C 4F 4F 50 00 39 40 E2 41 A2 52 C6 1D
+1A 42 C6 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C
+A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F
+3E 4F 30 4D A8 43 85 2B 4C 4F 4F 50 39 40 D0 41
+E5 3F E2 4E 85 4C 45 41 56 45 1A 42 C6 1D BA 40
+F2 41 00 00 BA 40 AC 41 02 00 B2 50 06 00 C6 1D
+A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D
+24 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F
+0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00 18 53
+1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49
+00 00 1A 83 FA 23 30 4D 94 4E 0A 56 4F 43 41 42
+55 4C 41 52 59 00 0D 12 87 12 6E 4C 2C 40 10 00
+2C 40 00 00 C0 41 2C 40 00 00 78 48 E2 41 A6 4F
+74 43 2C 40 C8 1D 3C 40 EA 40 78 48 F2 40 86 4C
+2C 40 CA 1D F2 40 22 40 BA 4A 05 46 4F 52 54 48
+84 12 C0 4F 66 65 08 65 DC 66 2A 65 12 54 16 4F
+A4 66 D0 65 EE 65 DC 64 B2 66 F8 65 00 00 5A 65
+E6 4A E4 65 00 00 86 4E 04 41 4C 53 4F 00 3A 40
+0C 00 39 40 CA 1D 38 40 CC 1D B5 3F 62 4B 08 50
+52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40 CC 1D
+38 40 CA 1D A2 3F 3A 46 04 4F 4E 4C 59 00 82 43
+CC 1D 30 4D BA 4E 0B 44 45 46 49 4E 49 54 49 4F
+4E 53 92 42 CA 1D DA 1D 30 4D D0 4F 2E 50 42 50
+52 50 3A 4E 82 4A C8 1D 2E 4E 82 4E C6 1D 3D 40
+10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B
+89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F
+3D 41 30 4D 0E 50 09 50 57 52 5F 53 54 41 54 45
+84 12 4A 50 0E 54 64 67 A6 4E 09 52 53 54 5F 53
+54 41 54 45 92 42 0E 18 94 50 92 42 0C 18 96 50
+EF 3F 86 50 08 50 57 52 5F 48 45 52 45 00 92 42
+C8 1D 94 50 92 42 C6 1D 96 50 30 4D 9A 50 08 52
+53 54 5F 48 45 52 45 00 92 42 C8 1D 0E 18 92 42
+C6 1D 0C 18 EC 3F 8A 4F 04 57 49 50 45 00 39 40
+10 00 29 83 B9 43 80 FF FC 23 B0 12 D2 49 B2 40
+64 67 0C 18 B2 40 0E 54 0E 18 CC 3F E8 50 04 57
+41 52 4D 00 30 40 18 51 1E 42 08 18 0D 12 87 12
+D0 45 06 0D 1B 5B 37 6D 23 00 90 45 5E 43 D0 45
+1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 36 20
+28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
+90 45 2C 40 30 FF 74 43 20 41 26 43 D0 45 0B 62
+79 74 65 73 20 66 72 65 65 20 36 4A 5A 4E 04 43
+4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A 5C 01
+B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0 03 00
+06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43 22 02
+B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3 66 02
+F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01 F2 40
+10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01 B2 40
+48 00 62 01 82 43 66 01 39 40 00 01 B2 40 33 00
+64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93 08 18
+01 24 59 07 38 40 59 14 18 83 FE 23 19 83 FA 23
+B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00 A1 04
+F2 C0 40 00 A2 04 39 40 4C 00 29 83 B9 40 7A 51
+B4 FF FB 23 B2 40 C0 44 F0 FF B2 40 18 00 0A 18
+39 40 00 10 29 83 89 43 00 1C FC 23 31 40 E0 1C
+3F 40 80 1C 37 40 22 40 36 40 B4 40 35 40 00 40
+34 40 0C 40 B2 40 0A 00 DC 1D B2 43 B4 1D 92 C3
+30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3 18 53
+82 48 08 18 B2 40 81 00 C0 05 92 42 02 18 C6 05
+92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3 C0 05
+92 D3 DA 05 3D 40 AA 52 38 90 0A 00 28 27 38 90
+16 00 25 2F 28 93 FE 22 F3 26 AC 52 E2 B2 60 02
+31 23 B2 40 81 A9 40 06 B2 40 30 00 46 06 D2 D3
+25 02 B2 D0 C0 04 0C 02 92 C3 40 06 39 42 B0 12
+9E 5B D2 C3 23 02 2C 42 B2 40 95 00 14 20 B2 40
+00 40 18 20 B0 12 14 5B 02 24 30 40 3A 5C B0 12
+9C 5B 7A 93 FC 23 B2 40 87 AA 14 20 92 43 16 20
+B2 40 00 48 18 20 B0 12 14 5B 29 42 B0 12 9E 5B
+92 43 14 20 82 43 16 20 78 43 3C 42 B2 40 00 77
+18 20 B0 12 14 5B B2 40 40 69 18 20 B0 12 5A 5B
+03 24 58 83 F3 23 D9 3F 0C 5C A2 43 16 20 B2 40
+00 50 18 20 B0 12 5A 5B D0 23 92 D3 40 06 82 43
+46 06 92 C3 40 06 B0 12 C4 5B 38 40 00 1E 92 48
+C6 01 04 20 92 48 C8 01 06 20 5A 48 C2 01 92 43
+02 20 7A 80 06 00 0D 24 7A 82 0B 24 A2 43 02 20
+6A 53 07 24 5A 53 05 24 3A 50 0B 20 0C 4A 30 40
+40 5C B0 12 C4 5B D2 48 0D 00 12 20 19 48 0E 00
+82 49 08 20 1A 48 16 00 0A 93 02 20 1A 48 24 00
+82 4A 0A 20 09 5A 82 49 0C 20 09 5A A2 93 02 20
+04 24 82 49 0E 20 39 50 20 00 19 82 12 20 19 82
+12 20 82 49 10 20 92 42 02 20 2C 20 9B 3E F8 4F
+09 41 53 53 45 4D 42 4C 45 52 84 12 C0 4F F0 59
+5E 5A A4 59 C8 5A 6A 59 F0 5A 84 56 00 00 60 59
+14 5A C2 59 02 5A 94 57 00 00 00 00 00 5B F4 4F
+0A 4E 85 48 49 32 4C 4F 0D 12 87 12 74 43 22 4E
+78 48 DE 4A FE 4F EA 53 22 40 6E 51 04 43 4F 44
+45 00 B0 12 E8 4B A2 82 C6 1D 0D 12 87 12 DA 4B
+AC 41 24 54 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 18 50 92 4B 22 40 E0 53 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 EE 53 DA 1D E3 3F 46 54 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+18 50 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 54 46 B2 46 BA 41
+EA 54 6C 47 B0 41 CC 4A 0C 55 EC 54 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 D6 54 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 54 46 6C 47 B0 41 48 55 3E 55 21 53
+3E 90 10 00 84 2D E2 2B 4A 55 B2 41 C4 1D DE 3F
+0D 12 87 12 20 42 B4 54 5A 55 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 D6 54 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 D6 54 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 28 55 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+28 55 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 28 55 FA 23 3C 50 10 00 B0 12
+10 55 EF 3F 0D 12 87 12 20 42 B4 54 2E 56 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 28 55 E5 23 3C 50 80 00 B0 12 10 55 E0 3F
+B0 44 04 52 45 54 49 00 0D 12 87 12 2C 40 00 13
+78 48 22 40 2C 40 2C 00 50 55 24 56 6E 56 2E 4E
+0E DC 09 4B A5 3F A4 54 03 4D 4F 56 84 12 64 56
+00 40 78 56 05 4D 4F 56 2E 42 84 12 64 56 40 40
+00 00 03 41 44 44 84 12 64 56 00 50 92 56 05 41
+44 44 2E 42 84 12 64 56 40 50 9E 56 04 41 44 44
+43 00 84 12 64 56 00 60 AC 56 06 41 44 44 43 2E
+42 00 84 12 64 56 40 60 52 56 04 53 55 42 43 00
+84 12 64 56 00 70 CA 56 06 53 55 42 43 2E 42 00
+84 12 64 56 40 70 D8 56 03 53 55 42 84 12 64 56
+00 80 E8 56 05 53 55 42 2E 42 84 12 64 56 40 80
+80 54 03 43 4D 50 84 12 64 56 00 90 02 57 05 43
+4D 50 2E 42 84 12 64 56 40 90 6E 54 04 44 41 44
+44 00 84 12 64 56 00 A0 1C 57 06 44 41 44 44 2E
+42 00 84 12 64 56 40 A0 0E 57 03 42 49 54 84 12
+64 56 00 B0 3A 57 05 42 49 54 2E 42 84 12 64 56
+40 B0 46 57 03 42 49 43 84 12 64 56 00 C0 54 57
+05 42 49 43 2E 42 84 12 64 56 40 C0 60 57 03 42
+49 53 84 12 64 56 00 D0 6E 57 05 42 49 53 2E 42
+84 12 64 56 40 D0 00 00 03 58 4F 52 84 12 64 56
+00 E0 88 57 05 58 4F 52 2E 42 84 12 64 56 40 E0
+BA 56 03 41 4E 44 84 12 64 56 00 F0 A2 57 05 41
+4E 44 2E 42 84 12 64 56 40 F0 20 42 50 55 C0 57
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+F4 56 03 52 52 43 84 12 BA 57 00 10 D2 57 05 52
+52 43 2E 42 84 12 BA 57 40 10 DE 57 04 53 57 50
+42 00 84 12 BA 57 80 10 EC 57 03 52 52 41 84 12
+BA 57 00 11 FA 57 05 52 52 41 2E 42 84 12 BA 57
+40 11 06 58 03 53 58 54 84 12 BA 57 80 11 00 00
+04 50 55 53 48 00 84 12 BA 57 00 12 20 58 06 50
+55 53 48 2E 42 00 84 12 BA 57 40 12 7A 57 04 43
+41 4C 4C 00 84 12 BA 57 80 12 1A 53 0E 4A 0D 12
+87 12 5E 43 D0 45 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 20 4A 20 42 B4 54 6C 58 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 54 46 6C 47 B0 41 CC 4A 8C 58 1B 17 87 12
+24 56 94 58 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+14 58 04 52 52 43 4D 00 84 12 66 58 50 00 C2 58
+04 52 52 41 4D 00 84 12 66 58 50 01 D0 58 04 52
+4C 41 4D 00 84 12 66 58 50 02 DE 58 04 52 52 55
+4D 00 84 12 66 58 50 03 2E 58 05 50 55 53 48 4D
+84 12 66 58 00 15 FA 58 04 50 4F 50 4D 00 84 12
+66 58 00 17 85 12 00 3C EC 58 03 53 3E 3D 85 12
+00 38 1A 59 02 53 3C 00 85 12 00 34 08 59 03 30
+3E 3D 85 12 00 30 2E 59 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C 42 59 03 55 3E 3D
+85 12 00 28 38 59 03 30 3C 3E 85 12 00 24 56 59
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D 4C 59
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 2A 57 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+80 59 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D AE 57
+05 41 47 41 49 4E 0D 12 87 12 14 59 C8 59 22 40
+00 00 05 57 48 49 4C 45 0D 12 87 12 6E 59 70 40
+22 40 24 59 06 52 45 50 45 41 54 00 0D 12 87 12
+14 59 C8 59 86 59 22 40 2A 5A 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D 3E 58 03 42 57 31 84 12 28 5A E2 1D
+46 5A 03 42 57 32 84 12 28 5A E4 1D 52 5A 03 42
+57 33 84 12 28 5A E6 1D 6A 5A 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 68 5A E8 1D 8E 5A 03 46 57 32 84 12
+68 5A EA 1D 9A 5A 03 46 57 33 84 12 68 5A EC 1D
+3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
+3E E0 00 08 30 4D A6 5A 04 47 4F 54 4F 00 0D 12
+87 12 14 59 BC 4A 6E 48 22 40 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 B0 5A BC 4A 6E 48 22 40 00 00
+03 4A 4D 50 0D 12 87 12 BC 4A F6 59 22 40 DC 5A
+04 3F 4A 4D 50 00 0D 12 87 12 B0 5A BC 4A 70 40
+C8 59 22 40 1A 43 25 3C D2 C3 23 02 E2 B2 60 02
+02 24 30 40 74 51 1A 52 04 20 19 62 06 20 92 43
+14 20 A2 93 02 20 07 24 0A 5A 49 69 82 4A 16 20
+C2 49 18 20 0A 3C C2 4A 15 20 8A 10 C2 4A 16 20
+C2 49 17 20 89 10 C2 49 18 20 B0 12 9C 5B 5A 53
+FC 23 39 40 05 00 D2 49 14 20 4E 06 82 93 46 06
+05 24 92 B3 6C 06 FD 27 C2 93 4C 06 59 83 F3 2F
+19 83 0B 30 F2 43 4E 06 82 93 46 06 03 24 92 B3
+6C 06 FD 27 5A 92 4C 06 F3 23 30 41 19 43 3A 43
+8A 10 C2 4A 4E 06 82 93 46 06 05 24 92 B3 6C 06
+FD 27 C2 93 4C 06 19 83 F3 23 5A 42 4C 06 30 41
+1A 52 08 20 09 43 1C D3 F2 40 51 00 19 20 B0 12
+18 5B 33 20 B0 12 9C 5B 6A 53 04 24 FB 23 D9 42
+4C 06 FF 1D F2 43 4E 06 03 43 19 53 39 90 01 02
+F6 23 F2 43 4E 06 3C C0 03 00 D2 D3 23 02 30 41
+09 43 2C D3 F0 40 58 00 11 C4 B0 12 18 5B 15 20
+3A 40 FE FF 29 43 B0 12 A0 5B D2 49 00 1E 4E 06
+03 43 19 53 39 90 00 02 F8 23 39 40 03 00 B0 12
+9E 5B 7A C0 E1 00 6A 92 DE 27 8C 10 1C 52 4C 06
+D2 D3 23 02 0D 12 87 12 D0 45 0B 3C 20 53 44 20
+45 72 72 6F 72 21 58 5C 2F 83 B2 40 10 00 DC 1D
+0E 4C 87 12 26 43 20 4A 92 4B 0E 00 22 20 92 4B
+10 00 24 20 5A 42 23 20 58 42 22 20 92 93 02 20
+08 24 59 42 24 20 89 10 0A 59 88 10 08 58 0A 6A
+88 10 08 58 30 41 82 43 1C 20 92 42 0E 20 1A 20
+C2 93 24 20 03 20 92 93 22 20 14 24 92 42 22 20
+D0 04 92 42 24 20 D2 04 92 42 12 20 C8 04 92 42
+E4 04 1A 20 92 42 E6 04 1C 20 92 52 10 20 1A 20
+82 63 1C 20 30 41 92 4B 0E 00 22 20 92 4B 10 00
+24 20 B0 12 96 5C 5A 4B 03 00 82 5A 1A 20 82 63
+1C 20 30 41 09 93 07 24 F8 90 20 00 00 1E 03 20
+18 53 19 83 F9 23 30 41 1B 42 32 20 82 43 1E 20
+B2 90 00 02 20 20 A3 20 BB 80 00 02 12 00 8B 73
+14 00 DB 53 03 00 DB 92 12 20 03 00 11 28 CB 43
+03 00 B0 12 68 5C B0 12 C0 5B 8B 43 10 00 9B 48
+00 1E 0E 00 92 93 02 20 03 24 9B 48 02 1E 10 00
+B2 40 00 02 20 20 8B 93 14 00 0B 20 92 9B 12 00
+1E 20 7D 2C BB 90 00 02 12 00 03 2C 92 4B 12 00
+20 20 B0 12 D6 5C 1A 42 1A 20 19 42 1C 20 23 3F
+3C 42 3B 40 40 20 09 43 CB 93 02 00 10 24 9B 92
+24 20 0C 00 04 20 9B 92 22 20 0A 00 07 24 09 4B
+3B 50 18 00 3B 90 00 21 EF 23 0C 5C 30 41 0C 43
+82 4B 32 20 8B 49 00 00 49 93 0A 24 99 52 C4 1D
+16 00 4A 93 05 34 C9 93 02 00 02 34 5A 59 02 00
+CB 4A 02 00 CB 43 03 00 9B 42 1A 20 04 00 9B 42
+1C 20 06 00 18 42 30 20 8B 48 08 00 9B 48 1A 1E
+0A 00 9B 48 14 1E 0C 00 9B 48 1A 1E 0E 00 9B 48
+14 1E 10 00 9B 48 1C 1E 12 00 9B 48 1E 1E 14 00
+82 43 1E 20 6A 93 5F 27 C9 37 8B 43 16 00 7A 93
+02 24 0A 38 95 3F B2 40 3C 21 34 44 B2 40 CE 43
+5A 44 B2 40 02 21 00 21 18 42 00 21 B2 50 06 00
+00 21 19 42 C4 1D 1A 42 C0 1D 0A 89 88 4A 00 00
+19 52 C2 1D 88 49 02 00 88 4D 04 00 79 3F 1B 42
+32 20 0B 93 A3 27 EB 93 02 00 04 20 B0 12 E8 62
+B0 12 B0 62 5A 4B 02 00 CB 43 02 00 09 4B 2B 4B
+82 4B 32 20 7A 93 07 20 B2 40 3C 1D 34 44 B2 40
+5C 44 5A 44 0A 3C 0B 93 89 27 CB 93 02 00 86 37
+92 4B 16 00 1E 20 B0 12 50 5D 21 52 2F 53 B2 80
+06 00 00 21 1A 42 00 21 3E 4A BF 4A 00 00 3D 4A
+30 4D CE 50 85 52 45 41 44 22 5A 43 19 3C 0E 51
+86 57 52 49 54 45 22 00 6A 43 12 3C 36 50 84 44
+45 4C 22 00 6A 42 0C 3C 2C 54 05 43 4C 4F 53 45
+B0 12 5E 5E 30 4D 52 4F 85 4C 4F 41 44 22 7A 43
+2F 83 8F 4E 00 00 0E 4A 82 93 BE 1D 0C 24 0D 12
+87 12 2C 40 2C 40 78 48 78 48 EE 45 0C 46 2C 40
+36 5F 78 48 22 40 0D 12 87 12 2C 40 22 00 54 46
+C0 48 34 5F 3D 41 35 4F 0E 55 82 4E 36 20 1C 43
+92 42 2C 20 22 20 92 42 2E 20 24 20 0E 95 8D 24
+F5 90 3A 00 01 00 01 20 25 53 F5 90 5C 00 00 00
+08 20 15 53 92 42 02 20 22 20 82 43 24 20 0E 95
+70 24 82 45 34 20 B0 12 96 5C 34 40 20 00 A2 93
+02 20 04 24 92 92 22 20 02 20 02 24 14 42 12 20
+B0 12 76 5D 2C 43 0A 43 08 4A 58 0E 08 58 82 48
+30 20 C8 93 00 1E 61 24 39 42 F8 95 00 1E 04 20
+18 53 19 83 FA 23 15 53 F5 90 2E 00 FF FF 19 24
+39 50 03 00 B0 12 F4 5C 06 20 F5 90 5C 00 FF FF
+29 24 0E 95 27 28 15 42 34 20 1A 53 3A 90 10 00
+DB 23 92 53 1A 20 82 63 1C 20 14 83 D1 23 2C 42
+3C 3C F5 90 2E 00 FE FF EE 27 B0 12 F4 5C EB 23
+39 40 03 00 F8 95 00 1E 04 20 18 53 19 83 FA 23
+09 3C 0E 95 E0 2F F5 90 5C 00 FF FF DC 23 B0 12
+F4 5C D9 23 18 42 30 20 92 48 1A 1E 22 20 92 48
+14 1E 24 20 F8 B0 10 00 0B 1E 14 24 82 93 24 20
+06 20 82 93 22 20 03 20 92 42 02 20 22 20 0E 95
+8E 2F 92 42 22 20 2C 20 92 42 24 20 2E 20 8F 43
+00 00 03 3C 2A 4F B0 12 80 5D 34 40 0C 40 35 40
+00 40 3A 4F 3E 4F 0A 93 05 24 7A 93 14 20 0C 93
+02 20 3D 41 30 4D 0D 12 87 12 D0 45 0B 3C 20 4F
+70 65 6E 45 72 72 6F 72 2E 45 74 43 C0 48 90 45
+58 45 AC 41 56 5C 1A 93 B6 20 0C 93 EC 23 30 4D
+C4 5E 04 52 45 41 44 00 2F 83 8F 4E 00 00 1E 42
+32 20 B0 12 08 5D 1E 82 32 20 30 4D 2C 43 12 12
+2A 20 18 42 02 20 08 58 2A 41 82 9A 0A 20 A1 24
+B0 12 C0 5B 09 43 28 93 03 24 89 93 02 1E 03 20
+89 93 00 1E 07 24 09 58 39 90 00 02 F4 23 91 53
+00 00 EA 3F 0C 43 6A 41 B9 43 00 1E 28 93 0F 24
+B9 40 FF 0F 02 1E 09 11 8A 10 09 5A 5A 41 01 00
+0A 11 09 10 82 4A 28 20 82 49 26 20 07 3C 09 11
+C2 49 26 20 C2 4A 27 20 82 43 28 20 3A 41 82 4A
+2A 20 30 41 0A 12 1A 52 08 20 B0 12 00 5C 3A 41
+1A 52 0C 20 30 40 00 5C F2 B0 40 00 A2 04 29 20
+F2 B0 10 00 A2 04 FC 27 5A 42 B0 04 4A 11 59 42
+B4 04 F2 40 20 00 C0 04 D2 42 B1 04 C8 04 1A 52
+E4 04 D2 42 B5 04 C8 04 19 52 E4 04 D2 42 B2 04
+C0 04 B2 40 00 08 C8 04 1A 52 E4 04 92 42 B6 04
+C0 04 B2 80 BC 07 C0 04 B2 40 00 02 C8 04 19 52
+E4 04 30 41 22 2A 2B 2C 2F 3A 3B 3C 3D 3E 3F 5B
+5C 5D 7C 2E 29 92 06 38 39 80 03 00 B0 12 04 62
+39 40 03 00 7A 4B C8 4A 00 1E 82 9B 36 20 12 28
+0D 12 3D 40 0F 00 3C 40 B4 61 7A 9C F3 27 1D 83
+FC 23 3D 41 6A 9C E6 27 3A 80 21 00 EB 3B 18 53
+19 83 E8 23 09 93 06 24 F8 40 20 00 00 1E 18 53
+19 83 FA 23 30 41 2A 93 EC 20 2C 93 0E 24 0C 93
+BB 24 0D 12 87 12 D0 45 0C 3C 20 57 72 69 74 65
+45 72 72 6F 72 00 AC 41 98 60 B0 12 CC 60 92 42
+26 20 22 20 92 42 28 20 24 20 B0 12 44 61 B0 12
+76 5D 18 42 30 20 F8 40 20 00 0B 1E B0 12 58 61
+88 43 0C 1E 88 4A 0E 1E 88 49 10 1E 88 49 12 1E
+98 42 24 20 14 1E 98 42 22 20 1A 1E 88 43 1C 1E
+88 43 1E 1E 1C 43 1B 42 34 20 82 9B 36 20 C9 27
+FB 90 2E 00 00 00 C5 27 39 40 0B 00 B0 12 D4 61
+B0 12 F2 62 2A 43 B0 12 80 5D 0C 93 BA 23 30 4D
+1A 4B 04 00 19 4B 06 00 B0 12 C6 5B B0 12 58 61
+18 4B 08 00 88 49 12 1E 88 4A 16 1E 88 49 18 1E
+98 4B 12 00 1C 1E 98 4B 14 00 1E 1E 1A 4B 04 00
+19 4B 06 00 30 40 02 5C 9B 52 1E 20 12 00 8B 63
+14 00 1A 42 1A 20 19 42 1C 20 30 40 02 5C B2 40
+00 02 1E 20 1B 42 32 20 B0 12 E8 62 82 43 1E 20
+DB 53 03 00 DB 92 12 20 03 00 22 20 CB 43 03 00
+B0 12 68 5C 08 12 0A 12 B0 12 CC 60 2A 91 05 24
+B0 12 44 61 2A 41 B0 12 C0 5B 3A 41 38 41 98 42
+26 20 00 1E 92 93 02 20 03 24 98 42 28 20 02 1E
+B0 12 44 61 9B 42 26 20 0E 00 9B 42 28 20 10 00
+30 40 D6 5C D0 5E 05 57 52 49 54 45 B0 12 FE 62
+30 4D B2 60 07 53 44 5F 45 4D 49 54 B2 90 00 02
+1E 20 02 28 B0 12 FE 62 18 42 1E 20 C8 4E 00 1E
+92 53 1E 20 3E 4F 30 4D 58 4B 13 00 59 4B 14 00
+89 10 09 58 58 4B 15 00 5B 42 12 20 0A 43 3C 42
+08 11 09 10 4A 10 1C 83 0B 11 FA 2B 0A 11 1C 83
+FD 37 1B 42 32 20 19 5B 0A 00 18 6B 0C 00 8B 49
+0E 00 8B 48 10 00 CB 4A 03 00 1A 4B 12 00 BB C0
+FF 01 12 00 3A F0 FF 01 82 4A 1E 20 B0 12 72 5D
+30 4D 0C 93 38 20 38 90 E0 01 03 2C C8 93 20 1E
+02 24 7C 40 E5 00 C8 4C 00 1E B0 12 F2 62 B0 12
+74 5C 82 4A 2A 20 0B 4A B0 12 C0 5B 1A 48 00 1E
+88 43 00 1E 92 93 02 20 09 24 19 48 02 1E 88 43
+02 1E 39 F0 FF 0F 39 90 FF 0F 02 20 3A 93 0E 24
+82 4A 22 20 82 49 24 20 B0 12 74 5C 0B 9A E6 27
+0A 12 0A 4B B0 12 44 61 3A 41 DD 3F 0A 4B B0 12
+44 61 B0 12 5E 5E 30 4D 66 4E 08 54 45 52 4D 32
+53 44 22 00 0D 12 87 12 E4 5E 2C 40 02 00 74 43
+C0 48 36 5F 86 64 3D 41 92 C3 DC 05 08 43 B0 12
+90 44 92 B3 DC 05 FD 27 59 42 CC 05 69 92 0D 24
+C8 49 00 1E 18 53 38 90 FF 01 F3 2B 03 24 B0 12
+FE 62 EC 3F B0 12 A2 44 EC 3F B0 12 A2 44 82 48
+1E 20 B0 12 5E 5E 3D 41 30 4D A6 4D 0A 7B 53 44
+5F 54 4F 4F 4C 53 7D 00 30 4D 74 63 06 53 45 43
+54 4F 52 00 09 4E 2A 4F B0 12 C6 5B 0D 12 87 12
+42 42 D4 42 F0 42 90 45 58 45 2C 40 00 1E 2C 40
+00 02 E2 66 22 40 EA 5E 07 43 4C 55 53 54 45 52
+82 4E 24 20 A2 4F 22 20 B0 12 96 5C 9F 42 1A 20
+00 00 1E 42 1C 20 DE 3F CA 4F 03 46 41 54 2F 82
+8F 4E 02 00 9F 42 08 20 00 00 0E 43 D3 3F DE 5E
+03 44 49 52 2F 82 8F 4E 02 00 92 42 2C 20 22 20
+92 42 2E 20 24 20 E0 3F CC 64 07 7B 54 4F 4F 4C
+53 7D 30 4D 5A 54 03 41 4E 44 3E FF 30 4D 28 50
+02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF
+3E 40 80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F
+0E 11 0D 12 87 12 2C 40 3C 00 1C 45 5E 43 2C 40
+08 00 1C 45 2C 40 3E 00 1C 45 58 45 82 40 82 40
+8E 41 BA 41 BC 65 5A 40 5A 40 22 40 C0 41 F8 41
+EA 40 26 43 2C 40 02 00 D0 41 BE 65 22 40 70 65
+03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C
+D2 3F A8 4C 01 3F 2E 4E 30 40 26 43 B4 50 03 50
+41 44 85 12 E4 1C 66 63 05 57 4F 52 44 53 0D 12
+87 12 BE 45 2C 40 03 00 6E 45 2C 40 CA 1D EA 40
+F2 65 2C 40 10 00 3C 40 18 41 58 4F 2C 40 00 00
+3C 40 2C 40 10 00 3C 40 18 41 2C 40 00 00 C0 41
+3C 40 F8 41 F2 65 18 41 EA 40 A4 41 B0 41 4E 66
+5A 40 5A 40 F8 41 3C 40 F2 65 18 41 EA 40 2C 40
+02 00 D0 41 30 66 4C 40 B0 41 90 66 3C 40 2C 40
+02 00 20 41 EA 40 92 40 F2 65 18 41 F2 40 3C 40
+C0 48 2C 40 7F 00 6A 65 90 45 00 41 2C 40 0F 00
+6A 65 2C 40 10 00 70 40 20 41 6E 45 AC 41 1C 66
+5A 40 22 40 F8 5E 03 4D 41 58 2E 9F 07 38 2F 53
+30 4D 96 66 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
+6A 64 03 55 2E 52 0D 12 87 12 A8 40 42 42 2C 40
+00 00 A2 42 D4 42 F0 42 B4 40 82 40 20 41 2C 40
+00 00 9A 66 6E 45 90 45 22 40 40 65 04 44 55 4D
+50 00 0D 12 12 12 DC 1D B2 40 10 00 DC 1D 2E 5F
+87 12 70 40 82 40 82 40 26 43 2C 40 01 00 20 41
+26 43 2C 40 FE FF 6A 65 C0 41 BE 45 F8 41 2C 40
+07 00 B6 66 58 45 F8 41 2C 40 10 00 18 41 F8 41
+C0 41 F8 41 00 41 2C 40 03 00 B6 66 E2 41 22 67
+58 45 58 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41
+F8 41 00 41 2C 40 7E 00 A8 66 20 42 9A 66 1C 45
+E2 41 40 67 2C 40 10 00 D0 41 0A 67 B4 40 2C 42
+F2 40 22 40
+@FFFE
+7A 51
+q
index f63b082..9dac743 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 DE 44 80 3E 80 04 05 00 18 00 EE 67 52 54
-A4 44 B6 44 50 5C 8C 5C
+10 00 08 00 A1 F7 80 3E 05 00 18 00 A4 67 30 54
+90 44 A2 44 06 5C 42 5C 00 00
+@2000
+00 00
 @4000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 41 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 41 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 41 02 42 4C 00
-85 12 20 00 1C 42 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 42 04 42 41 53 45 00 85 12 DC 1D
 C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 41 06 55 4D 2F
 4D 4F 44 00 30 12 5A 40 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 40 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 42
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 42
 02 23 53 00 0D 12 87 12 A2 42 DC 42 2D 83 09 93
@@ -53,594 +55,590 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 42 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 42 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 42 02 55 2E 00 0D 12 87 12 42 42 2C 40 00 00
-D4 42 F0 42 B8 45 80 45 22 40 3E 41 02 44 2E 00
+D4 42 F0 42 90 45 58 45 22 40 3E 41 02 44 2E 00
 0D 12 87 12 42 42 70 40 82 40 44 41 D4 42 92 40
-14 43 F0 42 B8 45 80 45 22 40 7C 40 01 2E 0E 93
+14 43 F0 42 90 45 58 45 22 40 7C 40 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 43 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 40 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 42 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 43 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 A4 44 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 B6 44 30 4D 08 42 03 4B
-45 59 30 40 AE 43 0D 12 3D 40 F6 43 1B 42 32 20
-9B 42 1E 20 16 00 1A 4F 02 00 8F 4E 00 00 0E 43
-19 42 1E 20 02 3C F8 43 2D 83 19 92 20 20 15 2C
-58 49 00 1E 19 53 78 90 20 00 08 2C 78 90 0A 00
-F4 23 82 49 1E 20 2F 53 3D 41 30 4D 2E 9F 72 24
-CA 48 00 00 1A 53 1E 53 6D 3C 0A 12 B0 12 92 5D
-3A 41 DE 3F 92 43 03 43 49 42 85 12 3C 1D 3F 80
-06 00 8F 4E 04 00 3E 40 54 00 9F 42 3C 44 00 00
-AF 4F 02 00 05 3C 82 43 06 41 43 43 45 50 54 00
-30 40 70 44 A8 43 08 28 41 43 43 45 50 54 29 00
-3C 40 1C 45 3B 40 E6 44 2D 15 0A 4E 2E 4F 0A 5E
-3B 40 0D 00 3C 40 20 00 3D 40 10 45 92 B3 DC 05
-05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
-CA 44 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
-E2 C2 23 02 30 41 B2 40 13 00 CE 05 E2 D2 23 02
-30 41 00 00 05 53 4C 45 45 50 30 40 D8 44 00 00
-07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F 21 52
-3A 17 58 42 CC 05 48 9C 08 2C 48 9B E4 27 78 92
-11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24 CE 48
-00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05 30 4D
-12 45 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40 18 00
-0A 18 82 93 E4 1D 02 24 92 53 E4 1D 3E 8F 3D 41
-30 4D 66 44 06 28 45 4D 49 54 29 00 08 4E 3E 4F
-E1 3F 3C 43 04 45 4D 49 54 00 30 40 3C 45 44 45
-04 45 43 48 4F 00 B2 40 82 48 0A 45 82 43 E4 1D
-30 4D 5C 43 06 4E 4F 45 43 48 4F 00 B2 40 30 4D
-0A 45 92 43 E4 1D 30 4D 0E 43 05 53 50 41 43 45
-2F 83 8F 4E 00 00 3E 40 20 00 DF 3F 7A 45 06 53
-50 41 43 45 53 00 0E 93 09 24 0D 12 3D 40 A2 45
-EF 3F A4 45 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D
-22 43 04 54 59 50 45 00 0E 93 0F 24 1E 15 3D 40
-CE 45 28 4F 7E 48 8F 48 00 00 2F 83 BE 3F D0 45
-2D 83 91 83 02 00 F5 23 1D 17 2F 53 3E 4F 30 4D
-34 45 04 28 43 52 29 00 0D 12 87 12 00 46 02 0D
-0A 00 B8 45 22 40 36 44 02 43 52 00 30 40 E8 45
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 40 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 42 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 42 03 4B 45 59 30 40 B0 43
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 90 44 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 A2 44 30 4D 0D 12
+3D 40 EE 43 1B 42 32 20 9B 42 1E 20 16 00 1A 4F
+02 00 8F 4E 00 00 0E 43 19 42 1E 20 02 3C F0 43
+2D 83 19 92 20 20 15 2C 58 49 00 1E 19 53 78 90
+20 00 08 2C 78 90 0A 00 F4 23 82 49 1E 20 2F 53
+3D 41 30 4D 2E 9F 67 24 CA 48 00 00 1A 53 1E 53
+62 3C 0A 12 B0 12 48 5D 3A 41 DE 3F 92 43 03 43
+49 42 85 12 3C 1D 3F 80 06 00 8F 4E 04 00 3E 40
+54 00 9F 42 34 44 00 00 AF 4F 02 00 05 3C 82 43
+06 41 43 43 45 50 54 00 30 40 5C 44 3C 40 FE 44
+3B 40 C8 44 2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00
+3C 40 20 00 3D 40 F2 44 92 B3 DC 05 05 24 18 42
+CC 05 38 90 0A 00 04 20 21 53 39 40 B6 44 4D 15
+A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 23 02
+30 41 B2 40 13 00 CE 05 E2 D2 23 02 30 41 00 00
+05 53 4C 45 45 50 30 40 BA 44 12 D2 0A 18 FB 3F
+21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E9 27
+78 92 11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24
+CE 48 00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05
+30 4D F4 44 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40
+18 00 0A 18 82 93 DE 1D 02 24 92 53 DE 1D 3E 8F
+3D 41 30 4D 3C 43 04 45 4D 49 54 00 30 40 20 45
+08 4E 3E 4F E0 3F 16 45 04 45 43 48 4F 00 B2 40
+82 48 EC 44 82 43 DE 1D 30 4D 5C 43 06 4E 4F 45
+43 48 4F 00 B2 40 30 4D EC 44 92 43 DE 1D 30 4D
+0E 43 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
+20 00 DC 3F 52 45 06 53 50 41 43 45 53 00 0E 93
+09 24 0D 12 3D 40 7A 45 EF 3F 7C 45 2D 83 1E 83
+EB 23 3D 41 3E 4F 30 4D 22 43 04 54 59 50 45 00
+0E 93 0F 24 1E 15 3D 40 A6 45 28 4F 7E 48 8F 48
+00 00 2F 83 BB 3F A8 45 2D 83 91 83 02 00 F5 23
+1D 17 2F 53 3E 4F 30 4D 2E 44 02 43 52 00 30 40
+C2 45 0D 12 87 12 D0 45 02 0D 0A 00 90 45 22 40
 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3
-0D 63 30 4D F8 45 07 43 41 50 53 5F 4F 4E B2 43
-B4 1D 30 4D 16 46 08 43 41 50 53 5F 4F 46 46 00
-82 43 B4 1D 30 4D 8E 45 82 53 22 00 0D 12 87 12
-2C 40 00 46 A8 48 30 46 2C 40 22 00 84 46 1E 46
-52 46 3D 41 6E 4E 1E 83 82 5E CC 1D 3E 4F 92 B3
-CC 1D A2 63 CC 1D 30 4D 64 45 82 2E 22 00 0D 12
-87 12 3C 46 2C 40 B8 45 A8 48 22 40 00 00 04 57
-4F 52 44 00 3C 40 C6 1D 39 4C 3A 4C 09 5A 3A 5C
+0D 63 30 4D BA 45 07 43 41 50 53 5F 4F 4E B2 43
+B4 1D 30 4D E6 45 08 43 41 50 53 5F 4F 46 46 00
+82 43 B4 1D 30 4D 66 45 82 53 22 00 0D 12 87 12
+2C 40 D0 45 78 48 00 46 2C 40 22 00 54 46 EE 45
+22 46 3D 41 6E 4E 1E 83 82 5E C6 1D 3E 4F 92 B3
+C6 1D A2 63 C6 1D 30 4D 3C 45 82 2E 22 00 0D 12
+87 12 0C 46 2C 40 90 45 78 48 22 40 00 00 04 57
+4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C 09 5A 3A 5C
 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83 3B 40 60 00
 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53
 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90 7B 00 F0 2F
-7C 80 20 00 ED 3F 1A 82 C8 1D 82 4A CA 1D 1E 42
-CC 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
-44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 D0 1D
+7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A C4 1D 1E 42
+C6 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
+44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 CA 1D
 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0 1E 00 0E 58
 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E 78 49 48 C4
 48 95 F7 23 0A 4C 1A 53 FA 99 00 00 F2 23 58 83
 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43 4A 93 01 30
 2E 83 8F 4C 00 00 35 40 00 40 34 40 0C 40 30 4D
 8C 41 07 3E 4E 55 4D 42 45 52 3C 4F 38 4F 29 4F
-2F 82 1B 42 E2 1D 6A 4C 7A 80 30 00 7A 90 0A 00
+2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00 7A 90 0A 00
 05 28 7A 80 07 00 7A 90 0A 00 13 28 0A 9B 11 2C
 82 49 D0 04 82 48 D2 04 82 4B C8 04 19 42 E4 04
 18 42 E6 04 09 5A 08 63 1C 53 1E 83 E4 23 8F 48
 02 00 8F 4C 00 00 8F 49 04 00 30 4D 0C 43 1B 42
-E2 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 EC 47
+DC 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 BC 47
 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00
 10 2C 5A 83 2B 43 7A 52 07 24 3B 52 6A 53 04 24
 3B 40 10 00 5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80
-2C 00 5A 93 B8 23 B1 43 02 00 CE 3F EE 47 0E 93
+2C 00 5A 93 B8 23 B1 43 02 00 CE 3F BE 47 0E 93
 32 24 32 B0 00 02 2F 20 32 D0 00 02 FC 90 2E 00
 00 00 02 20 2D 83 C0 3F FC 90 2C 00 00 00 23 20
 0A 4E 09 43 8F 49 02 00 5A 83 09 4A 09 5C 69 49
 39 80 30 00 79 90 0A 00 05 28 79 80 07 00 79 90
 0A 00 0A 28 09 9B 08 2C 8F 49 00 00 0E 4B 2C 15
 B0 12 58 42 2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F
-04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B E2 1D 04 24
+04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B DC 1D 04 24
 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F 02 00 04 00
 BF 4F 00 00 3E E3 09 20 3E E3 BF E3 02 00 BF E3
 00 00 9F 53 02 00 8F 63 00 00 32 B0 00 02 01 20
-2F 53 30 4D 50 45 07 45 58 45 43 55 54 45 0A 4E
-3E 4F 00 4A 1E 41 01 2C 1A 42 CC 1D A2 53 CC 1D
-8A 4E 00 00 3E 4F 30 4D A6 48 87 4C 49 54 45 52
-41 4C 82 93 BE 1D 0F 24 1A 42 CC 1D A2 52 CC 1D
+2F 53 30 4D 28 45 07 45 58 45 43 55 54 45 0A 4E
+3E 4F 00 4A 1E 41 01 2C 1A 42 C6 1D A2 53 C6 1D
+8A 4E 00 00 3E 4F 30 4D 76 48 87 4C 49 54 45 52
+41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D A2 52 C6 1D
 BA 40 2C 40 00 00 8A 4E 02 00 3E 4F 32 B0 00 02
-32 C0 00 02 F1 23 30 4D 26 46 05 43 4F 55 4E 54
+32 C0 00 02 F1 23 30 4D F6 45 05 43 4F 55 4E 54
 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF 30 4D 82 43
-CA 1D 82 4E C6 1D B2 4F C8 1D 3E 4F 30 4D 0D 12
-87 12 FE 48 20 42 84 46 1A 49 3D 40 22 49 E1 22
-44 3E 24 49 0A 4E 3E 4F 3D 40 3A 49 37 27 3D 40
-14 49 1A E2 BE 1D B8 27 B2 23 3C 49 3E 4F 3D 40
-14 49 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
-00 00 3D 40 E6 4B CC 3F 96 48 08 45 56 41 4C 55
-41 54 45 00 39 40 C6 1D 3C 49 3B 49 3A 49 3D 15
-87 12 0E 49 76 49 B2 41 CA 1D B2 41 C8 1D B2 41
-C6 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
+C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F 30 4D 0D 12
+87 12 CE 48 20 42 54 46 EA 48 3D 40 F2 48 E1 22
+48 3E F4 48 0A 4E 3E 4F 3D 40 0A 49 37 27 3D 40
+E4 48 1A E2 BE 1D B8 27 B2 23 0C 49 3E 4F 3D 40
+E4 48 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
+00 00 3D 40 AE 4B CC 3F 66 48 08 45 56 41 4C 55
+41 54 45 00 39 40 C0 1D 3C 49 3B 49 3A 49 3D 15
+87 12 DE 48 46 49 B2 41 C4 1D B2 41 C2 1D B2 41
+C0 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D 82 43 08 18
-87 12 00 46 05 0D 0A 6F 6B 20 B8 45 3E 44 80 45
-0E 49 D6 40 68 41 00 46 0D 73 74 61 63 6B 20 65
-6D 70 74 79 21 20 4C 4A 2C 40 30 FF 74 43 A4 41
-00 46 0B 46 52 41 4D 20 66 75 6C 6C 21 20 4C 4A
-38 42 EA 40 B0 41 A2 49 00 46 05 0D 0A 20 20 20
-AC 41 AA 49 58 44 05 41 42 4F 52 54 3F 40 80 1C
-C6 3F B2 40 4C 51 AA 51 B2 40 D8 44 CC 44 B2 40
-3C 45 4C 45 B2 40 E8 45 FE 45 B2 40 AE 43 D4 43
-B2 40 3C 1D 3C 44 B2 40 70 44 62 44 82 43 D8 5A
-82 43 E4 5A 82 43 F0 5A 82 43 20 5B 82 43 2C 5B
-82 43 38 5B B2 40 0A 00 E2 1D 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 0A 45 1B 42
-32 20 0B 93 04 24 CB 43 02 00 2B 4B FA 3F B0 12
-0E 4A A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
-23 02 92 C3 DC 05 38 40 A0 AA 39 42 03 43 19 83
-FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
-00 46 04 1B 5B 37 6D 00 B8 45 2C 40 E4 1D EA 40
-4C 40 B0 41 C6 4A 00 46 05 6C 69 6E 65 3A B8 45
-38 41 26 43 56 45 B8 45 00 46 04 1B 5B 30 6D 00
-B8 45 C2 50 1E 46 FC 49 F6 49 86 41 42 4F 52 54
-22 00 0D 12 87 12 3C 46 2C 40 4C 4A A8 48 22 40
-DC 46 01 27 0D 12 87 12 20 42 84 46 E2 46 B0 41
-04 4B 22 40 44 49 3E 42 81 5C 92 42 C6 1D CA 1D
-30 4D 00 00 81 5B 82 43 BE 1D 30 4D 08 4B 01 5D
-B2 43 BE 1D 30 4D 14 4B 83 5B 27 5D 0D 12 87 12
-F4 4A 2C 40 2C 40 A8 48 A8 48 22 40 BE 4F 02 00
-3E 4F 30 4D E2 45 82 49 53 00 0D 12 87 12 38 42
-EA 40 B0 41 60 4B 2C 4B 2C 40 3C 4B A8 48 22 40
-F4 4A 3C 4B 22 40 46 4B 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 38 46
-87 52 45 43 55 52 53 45 19 42 CC 1D 99 42 BA 1D
-00 00 A2 53 CC 1D 30 4D 88 49 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 42 84 46 E2 46 4C 40
-B0 41 04 4B 68 41 B0 41 C6 4B 2C 40 2C 40 A8 48
-A8 48 2C 40 A8 48 A8 48 22 40 82 9F BC 1D 2C 25
-0D 12 87 12 00 46 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 58 4A 28 4B 81 3B 82 93 BE 1D
-8C 27 0D 12 87 12 2C 40 22 40 A8 48 CA 4B 16 4B
-22 40 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 1D 82 4F BC 1D 30 4D EA 4B 01 3A 30 12 02 4C
-0D 12 87 12 5E 46 20 42 84 46 2C 4C 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 1D 82 49 B8 1D 82 4A
-BA 1D 2A 52 82 4A CC 1D 30 41 7E 46 08 56 41 52
-49 41 42 4C 45 00 B0 12 20 4C BA 40 86 12 FC FF
-DF 3C EA 48 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-20 4C BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-74 4C 06 43 52 45 41 54 45 00 B0 12 20 4C BA 40
-85 12 FC FF 8A 4A FE FF C3 3C 5A 49 05 44 4F 45
-53 3E 1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D AC 4C 05 44 45 46 45 52 B0 12 20 4C
-BA 40 30 40 FC FF BA 40 C2 4C FE FF A9 3C 92 4C
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-1A 4C 86 5B 54 48 45 4E 5D 00 30 4D 12 4D 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C 40 01 00 20 42
-84 46 F0 48 3C 40 B0 41 92 4D 82 40 82 40 00 46
-04 5B 49 46 5D 00 E8 4C BA 41 54 4D DA 45 2E 41
-AC 41 8A 4D 82 40 82 40 00 46 06 5B 45 4C 53 45
-5D 00 E8 4C BA 41 78 4D DA 45 38 41 3C 40 B0 41
-8A 4D 2E 41 AC 41 8A 4D 00 46 06 5B 54 48 45 4E
-5D 00 E8 4C BA 41 8A 4D 38 41 4C 40 BA 41 2E 4D
-22 40 DA 45 00 46 05 0D 0A 6B 6F 20 B8 45 3E 44
-FE 48 AC 41 2E 4D 1E 4D 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D A8 4D 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 42 84 46 E2 46 64 40
-5C 41 22 40 B8 4D 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 42 84 46 E2 46 64 40 22 40 F0 4D
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D BA 48
-06 4D 41 52 4B 45 52 00 B0 12 20 4C BA 40 84 12
-FC FF BA 40 EE 4D FE FF 9A 42 CE 1D 00 00 28 83
-8A 48 02 00 A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D
-A8 49 FE FF 89 48 00 00 30 4D 68 4B 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 1D A2 52 CC 1D BE 40
-B0 41 00 00 2E 53 30 4D C6 4C 84 45 4C 53 45 00
-A2 52 CC 1D 1A 42 CC 1D BA 40 AC 41 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D B2 45 84 54 48 45 4E 00
-9E 42 CC 1D 00 00 3E 4F 30 4D E0 4C 85 42 45 47
-49 4E 30 40 74 43 7A 4E 85 55 4E 54 49 4C 39 40
-B0 41 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D DA 4A 85 41 47 41 49 4E 39 40
-AC 41 EF 3F 5C 4C 85 57 48 49 4C 45 0D 12 87 12
-40 4E 70 40 22 40 80 4B 86 52 45 50 45 41 54 00
-0D 12 87 12 BE 4E 80 4E 22 40 5A 4E 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42 CC 1D BE 40
+87 12 D0 45 05 0D 0A 6F 6B 20 90 45 36 44 58 45
+DE 48 D6 40 68 41 D0 45 0D 73 74 61 63 6B 20 65
+6D 70 74 79 21 20 14 4A 2C 40 30 FF 74 43 A4 41
+D0 45 0B 46 52 41 4D 20 66 75 6C 6C 21 20 14 4A
+38 42 EA 40 B0 41 72 49 D0 45 05 0D 0A 20 20 20
+AC 41 7A 49 50 44 05 41 42 4F 52 54 3F 40 80 1C
+C6 3F B2 40 3A 51 38 51 B2 40 BA 44 B8 44 B2 40
+20 45 1E 45 B2 40 C2 45 C0 45 B2 40 B0 43 AE 43
+B2 40 3C 1D 34 44 B2 40 5C 44 5A 44 38 40 0A 00
+82 48 DC 1D 88 43 E8 1D 28 83 FC 2F B2 40 0A 00
+DC 1D 30 41 8F 93 02 00 03 20 2F 52 3E 4F 30 4D
+B2 40 82 48 EC 44 1B 42 32 20 0B 93 04 24 CB 43
+02 00 2B 4B FA 3F B0 12 DE 49 A2 B3 DC 05 FD 27
+B2 40 11 00 CE 05 E2 C2 23 02 92 C3 DC 05 38 40
+A0 AA 39 42 03 43 19 83 FD 23 18 83 FA 23 92 B3
+DC 05 F3 23 0D 12 87 12 D0 45 04 1B 5B 37 6D 00
+90 45 2C 40 DE 1D EA 40 4C 40 B0 41 8E 4A D0 45
+05 6C 69 6E 65 3A 90 45 38 41 26 43 2E 45 90 45
+D0 45 04 1B 5B 30 6D 00 90 45 B2 50 EE 45 CC 49
+C6 49 86 41 42 4F 52 54 22 00 0D 12 87 12 0C 46
+2C 40 14 4A 78 48 22 40 AC 46 01 27 0D 12 87 12
+20 42 54 46 B2 46 B0 41 CC 4A 22 40 14 49 3E 42
+81 5C 92 42 C0 1D C4 1D 30 4D 00 00 81 5B 82 43
+BE 1D 30 4D D0 4A 01 5D B2 43 BE 1D 30 4D DC 4A
+83 5B 27 5D 0D 12 87 12 BC 4A 2C 40 2C 40 78 48
+78 48 22 40 BE 4F 02 00 3E 4F 30 4D 6E 43 82 49
+53 00 0D 12 87 12 38 42 EA 40 B0 41 28 4B F4 4A
+2C 40 04 4B 78 48 22 40 BC 4A 04 4B 22 40 0E 4B
+09 49 4D 4D 45 44 49 41 54 45 1A 42 B6 1D FA D0
+80 00 00 00 30 4D 08 46 87 52 45 43 55 52 53 45
+19 42 C6 1D 99 42 BA 1D 00 00 A2 53 C6 1D 30 4D
+58 49 88 50 4F 53 54 50 4F 4E 45 00 0D 12 87 12
+20 42 54 46 B2 46 4C 40 B0 41 CC 4A 68 41 B0 41
+8E 4B 2C 40 2C 40 78 48 78 48 2C 40 78 48 78 48
+22 40 82 9F BC 1D 40 25 0D 12 87 12 D0 45 0F 73
+74 61 63 6B 20 6D 69 73 6D 61 74 63 68 21 20 4A
+F0 4A 81 3B 82 93 BE 1D 8C 27 0D 12 87 12 2C 40
+22 40 78 48 92 4B DE 4A 22 40 B2 4B 07 3A 4E 4F
+4E 41 4D 45 2F 83 8F 4E 00 00 1E 42 C6 1D 0A 4E
+39 40 00 02 08 49 28 53 B0 12 3C 4C BA 40 0D 12
+FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F BC 1D
+30 4D CC 4B 01 3A 30 12 EC 4B 0D 12 87 12 2E 46
+20 42 54 46 16 4C 08 4E 7A 4E 5A D3 5A 53 0A 58
+19 42 DA 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F 3D 41
+BA 40 30 40 00 00 BA 40 00 4C 02 00 82 48 B6 1D
+82 49 B8 1D 82 4A BA 1D 2A 52 82 4A C6 1D 30 41
+4E 46 08 56 41 52 49 41 42 4C 45 00 B0 12 0A 4C
+BA 40 86 12 FC FF DC 3C BA 48 08 43 4F 4E 53 54
+41 4E 54 00 B0 12 0A 4C BA 40 85 12 FC FF 8A 4E
+FE FF 3E 4F CD 3C 6A 4C 06 43 52 45 41 54 45 00
+B0 12 0A 4C BA 40 85 12 FC FF 8A 4A FE FF C0 3C
+2A 49 05 44 4F 45 53 3E 1A 42 BA 1D BA 40 84 12
+00 00 8A 4D 02 00 3D 41 30 4D A2 4C 05 44 45 46
+45 52 B0 12 0A 4C AC 3C 12 47 05 3E 42 4F 44 59
+2E 52 30 4D 88 4C 07 43 4F 4D 50 41 52 45 0C 4E
+38 4F 3B 4F 39 4F 0E 4B 0E 5C 0C 24 1B 83 07 30
+1C 83 07 30 19 53 F9 98 FF FF F5 27 02 2C 3E 43
+30 4D 1E 43 30 4D 04 4C 86 5B 54 48 45 4E 5D 00
+30 4D 08 4D 86 5B 45 4C 53 45 5D 00 0D 12 87 12
+2C 40 01 00 20 42 54 46 C0 48 3C 40 B0 41 88 4D
+82 40 82 40 D0 45 04 5B 49 46 5D 00 DE 4C BA 41
+4A 4D B2 45 2E 41 AC 41 80 4D 82 40 82 40 D0 45
+06 5B 45 4C 53 45 5D 00 DE 4C BA 41 6E 4D B2 45
+38 41 3C 40 B0 41 80 4D 2E 41 AC 41 80 4D D0 45
+06 5B 54 48 45 4E 5D 00 DE 4C BA 41 80 4D 38 41
+4C 40 BA 41 24 4D 22 40 B2 45 D0 45 05 0D 0A 6B
+6F 20 90 45 36 44 CE 48 AC 41 24 4D 14 4D 84 5B
+49 46 5D 00 0E 93 3E 4F B9 27 30 4D 9E 4D 89 5B
+44 45 46 49 4E 45 44 5D 0D 12 87 12 20 42 54 46
+B2 46 64 40 22 40 AE 4D 8B 5B 55 4E 44 45 46 49
+4E 45 44 5D 0D 12 87 12 B8 4D 5C 41 22 40 E0 4D
+3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 8A 48
+06 4D 41 52 4B 45 52 00 B0 12 0A 4C BA 40 84 12
+FC FF BA 40 DE 4D FE FF 9A 42 C8 1D 00 00 28 83
+8A 48 02 00 A2 52 C6 1D 18 42 B6 1D 19 42 B8 1D
+A8 49 FE FF 89 48 00 00 30 4D 30 4B 82 49 46 00
+2F 83 8F 4E 00 00 1E 42 C6 1D A2 52 C6 1D BE 40
+B0 41 00 00 2E 53 30 4D BC 4C 84 45 4C 53 45 00
+A2 52 C6 1D 1A 42 C6 1D BA 40 AC 41 FC FF 8E 4A
+00 00 2A 83 0E 4A 30 4D 8A 45 84 54 48 45 4E 00
+9E 42 C6 1D 00 00 3E 4F 30 4D D6 4C 85 42 45 47
+49 4E 30 40 74 43 6A 4E 85 55 4E 54 49 4C 39 40
+B0 41 A2 52 C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E
+FE FF 3E 4F 30 4D A2 4A 85 41 47 41 49 4E 39 40
+AC 41 EF 3F 52 4C 85 57 48 49 4C 45 0D 12 87 12
+30 4E 70 40 22 40 48 4B 86 52 45 50 45 41 54 00
+0D 12 87 12 AE 4E 70 4E 22 40 4A 4E 82 44 4F 00
+2F 83 8F 4E 00 00 A2 53 C6 1D 1E 42 C6 1D BE 40
 C0 41 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
-30 4D 00 4E 84 4C 4F 4F 50 00 39 40 E2 41 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42
+30 4D F0 4D 84 4C 4F 4F 50 00 39 40 E2 41 A2 52
+C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E FE FF 1E 42
 00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE 43 85 2B 4C 4F 4F 50 39 40
-D0 41 E5 3F 14 4F 85 4C 45 41 56 45 1A 42 CC 1D
+F6 3F 3E 4F 30 4D A8 43 85 2B 4C 4F 4F 50 39 40
+D0 41 E5 3F 04 4F 85 4C 45 41 56 45 1A 42 C6 1D
 BA 40 F2 41 00 00 BA 40 AC 41 02 00 B2 50 06 00
-CC 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
-30 4D 56 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
+C6 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
+30 4D 46 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
 3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
 18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D C6 4E 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 9A 4C 2C 40
-10 00 2C 40 00 00 C0 41 2C 40 00 00 A8 48 E2 41
-D8 4F 74 43 2C 40 CE 1D 3C 40 EA 40 A8 48 F2 40
-B2 4C 2C 40 D0 1D F2 40 22 40 F2 4A 05 46 4F 52
-54 48 84 12 F2 4F F0 65 92 65 66 67 B4 65 56 54
-48 4F 2E 67 5A 66 78 66 66 65 3C 67 82 66 00 00
-E4 65 1E 4B 6E 66 00 00 B8 4E 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 1D 38 40 D2 1D B5 3F 9A 4B
+E8 49 00 00 1A 83 FA 23 30 4D B6 4E 0A 56 4F 43
+41 42 55 4C 41 52 59 00 0D 12 87 12 90 4C 2C 40
+10 00 2C 40 00 00 C0 41 2C 40 00 00 78 48 E2 41
+C8 4F 74 43 2C 40 C8 1D 3C 40 EA 40 78 48 F2 40
+A8 4C 2C 40 CA 1D F2 40 22 40 BA 4A 05 46 4F 52
+54 48 84 12 E2 4F A6 65 48 65 1C 67 6A 65 34 54
+38 4F E4 66 10 66 2E 66 1C 65 F2 66 38 66 00 00
+9A 65 E6 4A 24 66 00 00 A8 4E 04 41 4C 53 4F 00
+3A 40 0C 00 39 40 CA 1D 38 40 CC 1D B5 3F 62 4B
 08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 1D 38 40 D0 1D A2 3F 6A 46 04 4F 4E 4C 59 00
-82 43 D2 1D 30 4D EC 4E 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 1D E0 1D 30 4D 02 50 60 50
-74 50 84 50 3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D
+CC 1D 38 40 CA 1D A2 3F 3A 46 04 4F 4E 4C 59 00
+82 43 CC 1D 30 4D DC 4E 0B 44 45 46 49 4E 49 54
+49 4F 4E 53 92 42 CA 1D DA 1D 30 4D F2 4F 50 50
+64 50 74 50 3A 4E 82 4A C8 1D 2E 4E 82 4E C6 1D
 3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
 FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D 40 50 09 50 57 52 5F 53 54 41
-54 45 84 12 7C 50 52 54 EE 67 D8 4E 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 C6 50 92 42 0C 18
-C8 50 EF 3F B8 50 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 1D C6 50 92 42 CC 1D C8 50 30 4D CC 50
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 1D 0E 18
-92 42 CC 1D 0C 18 EC 3F BC 4F 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 B4 FF FA 23
-B0 12 02 4A B2 40 EE 67 0C 18 B2 40 52 54 0E 18
-CA 3F 3C 4E 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 00 46 06 0D 1B 5B 37 6D 23 00 B8 45
-5E 43 00 46 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 B8 45 2C 40 30 FF 74 43 20 41 26 43
-00 46 0B 62 79 74 65 73 20 66 72 65 65 20 6E 4A
-1A 51 04 57 41 52 4D 00 30 40 4C 51 8C 4E 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A 5C 01
-B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0 03 00
-06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43 22 02
-B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3 66 02
-F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01 F2 40
-10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01 B2 40
-48 00 62 01 82 43 66 01 39 40 00 01 B2 40 33 00
-64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93 08 18
-01 24 59 07 38 40 59 14 18 83 FE 23 19 83 FA 23
-B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00 A1 04
-F2 C0 40 00 A2 04 3A 40 BA 51 39 40 B4 FF 89 4A
-00 00 29 53 FC 23 92 42 02 18 F0 FF B2 40 18 00
-0A 18 39 40 00 1C 89 43 00 00 29 53 39 90 FF 2B
-FA 2B 31 40 E0 1C 3F 40 80 1C 37 40 22 40 36 40
-B4 40 35 40 00 40 34 40 0C 40 B2 40 0A 00 E2 1D
-B2 43 B4 1D 92 C3 30 01 18 42 08 18 D2 B3 01 02
-04 20 38 E3 18 53 82 48 08 18 B2 40 81 00 C0 05
-B2 42 C6 05 B2 40 A1 F7 C8 05 F2 D0 03 00 0D 02
-92 C3 C0 05 92 D3 DA 05 3D 40 EE 52 38 90 0A 00
-1F 27 38 90 16 00 1C 2F 28 93 F5 22 EA 26 F0 52
-E2 B2 60 02 59 23 B2 40 81 A9 40 06 B2 40 30 00
-46 06 D2 D3 25 02 B2 D0 C0 04 0C 02 92 C3 40 06
-39 42 B0 12 28 5C D2 C3 23 02 2C 42 B2 40 95 00
-14 20 B2 40 00 40 18 20 B0 12 9E 5B 02 24 30 40
-C4 5C B0 12 26 5C 7A 93 FC 23 B2 40 87 AA 14 20
-92 43 16 20 B2 40 00 48 18 20 B0 12 9E 5B 29 42
-B0 12 28 5C 92 43 14 20 82 43 16 20 78 43 3C 42
-B2 40 00 77 18 20 B0 12 9E 5B B2 40 40 69 18 20
-B0 12 E4 5B 03 24 58 83 F3 23 D9 3F 0C 5C A2 43
-16 20 B2 40 00 50 18 20 B0 12 E4 5B D0 23 92 D3
-40 06 82 43 46 06 92 C3 40 06 B0 12 4E 5C 38 40
-00 1E 92 48 C6 01 04 20 92 48 C8 01 06 20 5A 48
-C2 01 92 43 02 20 7A 80 06 00 0D 24 7A 82 0B 24
-A2 43 02 20 6A 53 07 24 5A 53 05 24 3A 50 0B 20
-0C 4A 30 40 CA 5C B0 12 4E 5C D2 48 0D 00 12 20
-19 48 0E 00 82 49 08 20 1A 48 16 00 0A 93 02 20
-1A 48 24 00 82 4A 0A 20 09 5A 82 49 0C 20 09 5A
-A2 93 02 20 04 24 82 49 0E 20 39 50 20 00 19 82
-12 20 19 82 12 20 82 49 10 20 92 42 02 20 2C 20
-C3 3E 2A 50 09 41 53 53 45 4D 42 4C 45 52 84 12
-F2 4F 7A 5A E8 5A 2E 5A 52 5B F4 59 7A 5B F8 56
-00 00 EA 59 9E 5A 4C 5A 8C 5A 08 58 00 00 00 00
-8A 5B 26 50 44 51 85 48 49 32 4C 4F 0D 12 87 12
-74 43 54 4E A8 48 16 4B 30 50 2E 54 22 40 AE 51
-04 43 4F 44 45 00 B0 12 20 4C A2 82 CC 1D 0D 12
-87 12 12 4C AC 41 68 54 00 00 07 45 4E 44 43 4F
-44 45 0D 12 87 12 4A 50 CA 4B 22 40 24 54 03 41
-53 4D 92 42 E0 1D C0 1D B2 40 32 54 E0 1D E3 3F
-8A 54 06 45 4E 44 41 53 4D 00 92 42 C0 1D E0 1D
-E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 1D BA 40
-0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 1D B2 43
-BE 1D 30 40 4A 50 00 00 05 4C 4F 32 48 49 A2 83
-CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D 39 48 2A 48
-09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A FC 27 1A 83
-0E 4A 2A 88 82 4A CA 1D 30 4D 87 12 84 46 E2 46
-BA 41 2C 55 9C 47 B0 41 04 4B 4E 55 2E 55 29 4E
-39 90 86 12 02 20 2E 53 30 41 39 90 85 12 03 20
-1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52 30 41
-19 42 CC 1D A2 53 CC 1D 89 4E 00 00 3E 40 29 00
-12 12 CA 1D 92 53 CA 1D 87 12 84 46 9C 47 B0 41
-7E 55 74 55 21 53 3E 90 10 00 BE 2D 30 41 80 55
-B2 41 CA 1D 22 D3 30 41 0D 12 87 12 20 42 F8 54
-92 55 82 43 C4 1D 92 42 CC 1D C2 1D A2 53 CC 1D
-0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53 CA 1D
-B0 12 1A 55 0E 93 04 20 B2 40 00 03 C4 1D 27 3C
-1E 93 04 20 B2 40 10 03 C4 1D 21 3C 2E 93 04 20
-B2 40 20 03 C4 1D 1B 3C 2E 92 04 20 B2 40 20 02
-C4 1D 15 3C 3E 92 04 20 B2 40 30 02 C4 1D 0F 3C
-3E 93 04 20 B2 40 30 03 C4 1D 09 3C B2 40 30 00
-C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E 00 00 3E 4F
-3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40 10 02
-C4 1D 92 53 CA 1D B0 12 1A 55 EB 3F FA 90 40 00
-00 00 1A 20 B2 40 20 00 C4 1D 92 53 CA 1D B0 12
-60 55 0E 20 B2 50 10 00 C4 1D 3E 40 2B 00 B0 12
-60 55 33 24 92 92 C6 1D CA 1D 02 24 92 53 CA 1D
-8E 10 82 5E C4 1D D3 3F B0 12 60 55 F9 23 B2 50
-10 00 C4 1D 3E 40 28 00 B0 12 1A 55 B0 12 50 55
-E8 3F 0D 12 87 12 20 42 F8 54 8C 56 FE 90 26 00
-00 00 3E 40 20 00 04 20 B2 50 82 00 C4 1D C1 3F
-B0 12 60 55 DE 23 B2 50 80 00 C4 1D 3E 40 28 00
-B0 12 1A 55 B0 12 50 55 D4 23 3D 40 04 4B 30 4D
-C4 44 04 52 45 54 49 00 0D 12 87 12 2C 40 00 13
-A8 48 22 40 2C 40 2C 00 88 55 82 56 DE 56 2E 4E
-1E D2 C4 1D 19 42 C2 1D 90 3F E8 54 03 4D 4F 56
-84 12 D4 56 00 40 EC 56 05 4D 4F 56 2E 42 84 12
-D4 56 40 40 00 00 03 41 44 44 84 12 D4 56 00 50
-06 57 05 41 44 44 2E 42 84 12 D4 56 40 50 12 57
-04 41 44 44 43 00 84 12 D4 56 00 60 20 57 06 41
-44 44 43 2E 42 00 84 12 D4 56 40 60 C2 56 04 53
-55 42 43 00 84 12 D4 56 00 70 3E 57 06 53 55 42
-43 2E 42 00 84 12 D4 56 40 70 4C 57 03 53 55 42
-84 12 D4 56 00 80 5C 57 05 53 55 42 2E 42 84 12
-D4 56 40 80 C4 54 03 43 4D 50 84 12 D4 56 00 90
-76 57 05 43 4D 50 2E 42 84 12 D4 56 40 90 B2 54
-04 44 41 44 44 00 84 12 D4 56 00 A0 90 57 06 44
-41 44 44 2E 42 00 84 12 D4 56 40 A0 82 57 03 42
-49 54 84 12 D4 56 00 B0 AE 57 05 42 49 54 2E 42
-84 12 D4 56 40 B0 BA 57 03 42 49 43 84 12 D4 56
-00 C0 C8 57 05 42 49 43 2E 42 84 12 D4 56 40 C0
-D4 57 03 42 49 53 84 12 D4 56 00 D0 E2 57 05 42
-49 53 2E 42 84 12 D4 56 40 D0 00 00 03 58 4F 52
-84 12 D4 56 00 E0 FC 57 05 58 4F 52 2E 42 84 12
-D4 56 40 E0 2E 57 03 41 4E 44 84 12 D4 56 00 F0
-16 58 05 41 4E 44 2E 42 84 12 D4 56 40 F0 20 42
-88 55 34 58 1A 42 C4 1D B2 F0 70 00 C4 1D 8A 10
-3A F0 0F 00 82 DA C4 1D 4A 3F 68 57 03 52 52 43
-84 12 2E 58 00 10 4C 58 05 52 52 43 2E 42 84 12
-2E 58 40 10 58 58 04 53 57 50 42 00 84 12 2E 58
-80 10 66 58 03 52 52 41 84 12 2E 58 00 11 74 58
-05 52 52 41 2E 42 84 12 2E 58 40 11 80 58 03 53
-58 54 84 12 2E 58 80 11 00 00 04 50 55 53 48 00
-84 12 2E 58 00 12 9A 58 06 50 55 53 48 2E 42 00
-84 12 2E 58 40 12 EE 57 04 43 41 4C 4C 00 84 12
-2E 58 80 12 2C 40 2C 00 88 55 82 56 CE 58 59 42
-C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90 00 15 00 00
-02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00 03 2C
-5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E 43 00 46
-0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73 58 4A
-A8 58 05 50 55 53 48 4D 84 12 C4 58 00 15 12 59
-04 50 4F 50 4D 00 84 12 C4 58 00 17 20 42 F8 54
-32 59 82 43 C4 1D 92 42 CC 1D C2 1D A2 53 CC 1D
-92 53 CA 1D 3E 40 2C 00 87 12 84 46 9C 47 B0 41
-04 4B 82 56 56 59 0A 4E 3E 4F 1A 83 2A 92 CA 2F
-8A 10 5A 06 6F 3F 8E 58 04 52 52 43 4D 00 84 12
-2C 59 50 00 68 59 04 52 52 41 4D 00 84 12 2C 59
-50 01 76 59 04 52 4C 41 4D 00 84 12 2C 59 50 02
-84 59 04 52 52 55 4D 00 84 12 2C 59 50 03 85 12
-00 3C 92 59 03 53 3E 3D 85 12 00 38 A4 59 02 53
-3C 00 85 12 00 34 20 59 03 30 3E 3D 85 12 00 30
-B8 59 02 30 3C 00 85 12 00 30 00 00 02 55 3C 00
-85 12 00 2C CC 59 03 55 3E 3D 85 12 00 28 C2 59
-03 30 3C 3E 85 12 00 24 E0 59 02 30 3D 00 85 12
-00 20 D0 44 02 49 46 00 1A 42 CC 1D 8A 4E 00 00
-A2 53 CC 1D 0E 4A 30 4D D6 59 04 54 48 45 4E 00
-1A 42 CC 1D 08 4E 3E 4F 09 48 29 53 0A 89 0A 11
-3A 90 00 02 68 2F 88 DA 00 00 30 4D 9E 57 04 45
-4C 53 45 00 1A 42 CC 1D BA 40 00 3C 00 00 A2 53
-CC 1D 2F 83 8F 4A 00 00 E3 3F 0A 5A 05 55 4E 54
-49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D 2A 83 0A 89
-0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA 89 48
-00 00 A2 53 CC 1D 30 4D 22 58 05 41 47 41 49 4E
-0D 12 87 12 9E 59 52 5A 22 40 00 00 05 57 48 49
-4C 45 0D 12 87 12 F8 59 70 40 22 40 AE 59 06 52
-45 50 45 41 54 00 0D 12 87 12 9E 59 52 5A 10 5A
-22 40 B4 5A 3D 41 08 4E 3E 4F 2A 48 0A 93 04 20
-98 42 CC 1D 00 00 30 4D 88 43 00 00 C3 3F B8 58
-03 42 57 31 84 12 B2 5A 00 00 D0 5A 03 42 57 32
-84 12 B2 5A 00 00 DC 5A 03 42 57 33 84 12 B2 5A
-00 00 F4 5A 3D 41 1A 42 CC 1D 28 4E 08 93 08 20
-BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00 3E 4F 30 4D
-8E 43 00 00 80 3F 00 00 03 46 57 31 84 12 F2 5A
-00 00 18 5B 03 46 57 32 84 12 F2 5A 00 00 24 5B
-03 46 57 33 84 12 F2 5A 00 00 3E 90 00 30 07 24
-3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08 30 4D
-30 5B 04 47 4F 54 4F 00 0D 12 87 12 9E 59 F4 4A
-9E 48 22 40 00 00 05 3F 47 4F 54 4F 0D 12 87 12
-3A 5B F4 4A 9E 48 22 40 00 00 03 4A 4D 50 0D 12
-87 12 F4 4A 80 5A 22 40 66 5B 04 3F 4A 4D 50 00
-0D 12 87 12 3A 5B F4 4A 70 40 52 5A 22 40 1A 43
-25 3C D2 C3 23 02 E2 B2 60 02 02 24 30 40 B4 51
-1A 52 04 20 19 62 06 20 92 43 14 20 A2 93 02 20
-07 24 0A 5A 49 69 82 4A 16 20 C2 49 18 20 0A 3C
-C2 4A 15 20 8A 10 C2 4A 16 20 C2 49 17 20 89 10
-C2 49 18 20 B0 12 26 5C 5A 53 FC 23 39 40 05 00
-D2 49 14 20 4E 06 82 93 46 06 05 24 92 B3 6C 06
-FD 27 C2 93 4C 06 59 83 F3 2F 19 83 0B 30 F2 43
-4E 06 82 93 46 06 03 24 92 B3 6C 06 FD 27 5A 92
-4C 06 F3 23 30 41 19 43 3A 43 8A 10 C2 4A 4E 06
-82 93 46 06 05 24 92 B3 6C 06 FD 27 C2 93 4C 06
-19 83 F3 23 5A 42 4C 06 30 41 1A 52 08 20 09 43
-1C D3 F2 40 51 00 19 20 B0 12 A2 5B 33 20 B0 12
-26 5C 6A 53 04 24 FB 23 D9 42 4C 06 FF 1D F2 43
-4E 06 03 43 19 53 39 90 01 02 F6 23 F2 43 4E 06
-3C C0 03 00 D2 D3 23 02 30 41 09 43 2C D3 F0 40
-58 00 87 C3 B0 12 A2 5B 15 20 3A 40 FE FF 29 43
-B0 12 2A 5C D2 49 00 1E 4E 06 03 43 19 53 39 90
-00 02 F8 23 39 40 03 00 B0 12 28 5C 7A C0 E1 00
-6A 92 DE 27 8C 10 1C 52 4C 06 D2 D3 23 02 0D 12
-87 12 00 46 0B 3C 20 53 44 20 45 72 72 6F 72 21
-E2 5C 2F 83 B2 40 10 00 E2 1D 0E 4C 87 12 26 43
-58 4A 92 4B 0E 00 22 20 92 4B 10 00 24 20 5A 42
-23 20 58 42 22 20 92 93 02 20 08 24 59 42 24 20
-89 10 0A 59 88 10 08 58 0A 6A 88 10 08 58 30 41
-82 43 1C 20 92 42 0E 20 1A 20 C2 93 24 20 03 20
-92 93 22 20 14 24 92 42 22 20 D0 04 92 42 24 20
-D2 04 92 42 12 20 C8 04 92 42 E4 04 1A 20 92 42
-E6 04 1C 20 92 52 10 20 1A 20 82 63 1C 20 30 41
-92 4B 0E 00 22 20 92 4B 10 00 24 20 B0 12 20 5D
-5A 4B 03 00 82 5A 1A 20 82 63 1C 20 30 41 09 93
-07 24 F8 90 20 00 00 1E 03 20 18 53 19 83 F9 23
-30 41 1B 42 32 20 82 43 1E 20 B2 90 00 02 20 20
-A3 20 BB 80 00 02 12 00 8B 73 14 00 DB 53 03 00
-DB 92 12 20 03 00 11 28 CB 43 03 00 B0 12 F2 5C
-B0 12 4A 5C 8B 43 10 00 9B 48 00 1E 0E 00 92 93
-02 20 03 24 9B 48 02 1E 10 00 B2 40 00 02 20 20
-8B 93 14 00 0B 20 92 9B 12 00 1E 20 7D 2C BB 90
-00 02 12 00 03 2C 92 4B 12 00 20 20 B0 12 60 5D
-1A 42 1A 20 19 42 1C 20 23 3F 3C 42 3B 40 40 20
-09 43 CB 93 02 00 10 24 9B 92 24 20 0C 00 04 20
-9B 92 22 20 0A 00 07 24 09 4B 3B 50 18 00 3B 90
-00 21 EF 23 0C 5C 30 41 0C 43 82 4B 32 20 8B 49
-00 00 49 93 0A 24 99 52 CA 1D 16 00 4A 93 05 34
-C9 93 02 00 02 34 5A 59 02 00 CB 4A 02 00 CB 43
-03 00 9B 42 1A 20 04 00 9B 42 1C 20 06 00 18 42
-30 20 8B 48 08 00 9B 48 1A 1E 0A 00 9B 48 14 1E
-0C 00 9B 48 1A 1E 0E 00 9B 48 14 1E 10 00 9B 48
-1C 1E 12 00 9B 48 1E 1E 14 00 82 43 1E 20 6A 93
-5F 27 C9 37 8B 43 16 00 7A 93 02 24 0A 38 95 3F
-B2 40 3C 21 3C 44 B2 40 D6 43 62 44 B2 40 02 21
-00 21 18 42 00 21 B2 50 06 00 00 21 19 42 CA 1D
-1A 42 C6 1D 0A 89 88 4A 00 00 19 52 C8 1D 88 49
-02 00 88 4D 04 00 79 3F 1B 42 32 20 0B 93 A3 27
-EB 93 02 00 04 20 B0 12 72 63 B0 12 3A 63 5A 4B
-02 00 CB 43 02 00 09 4B 2B 4B 82 4B 32 20 7A 93
-07 20 B2 40 3C 1D 3C 44 B2 40 70 44 62 44 0A 3C
-0B 93 89 27 CB 93 02 00 86 37 92 4B 16 00 1E 20
-B0 12 DA 5D 21 52 2F 53 B2 80 06 00 00 21 1A 42
-00 21 3E 4A BF 4A 00 00 3D 4A 30 4D 00 51 85 52
-45 41 44 22 5A 43 19 3C A2 51 86 57 52 49 54 45
-22 00 6A 43 12 3C 68 50 84 44 45 4C 22 00 6A 42
-0C 3C 70 54 05 43 4C 4F 53 45 B0 12 E8 5E 30 4D
-84 4F 85 4C 4F 41 44 22 7A 43 2F 83 8F 4E 00 00
-0E 4A 82 93 BE 1D 0C 24 0D 12 87 12 2C 40 2C 40
-A8 48 A8 48 1E 46 3C 46 2C 40 C0 5F A8 48 22 40
-0D 12 87 12 2C 40 22 00 84 46 F0 48 BE 5F 3D 41
-35 4F 0E 55 82 4E 36 20 1C 43 92 42 2C 20 22 20
-92 42 2E 20 24 20 0E 95 8D 24 F5 90 3A 00 01 00
-01 20 25 53 F5 90 5C 00 00 00 08 20 15 53 92 42
-02 20 22 20 82 43 24 20 0E 95 70 24 82 45 34 20
-B0 12 20 5D 34 40 20 00 A2 93 02 20 04 24 92 92
-22 20 02 20 02 24 14 42 12 20 B0 12 00 5E 2C 43
-0A 43 08 4A 58 0E 08 58 82 48 30 20 C8 93 00 1E
-61 24 39 42 F8 95 00 1E 04 20 18 53 19 83 FA 23
-15 53 F5 90 2E 00 FF FF 19 24 39 50 03 00 B0 12
-7E 5D 06 20 F5 90 5C 00 FF FF 29 24 0E 95 27 28
-15 42 34 20 1A 53 3A 90 10 00 DB 23 92 53 1A 20
-82 63 1C 20 14 83 D1 23 2C 42 3C 3C F5 90 2E 00
-FE FF EE 27 B0 12 7E 5D EB 23 39 40 03 00 F8 95
-00 1E 04 20 18 53 19 83 FA 23 09 3C 0E 95 E0 2F
-F5 90 5C 00 FF FF DC 23 B0 12 7E 5D D9 23 18 42
-30 20 92 48 1A 1E 22 20 92 48 14 1E 24 20 F8 B0
-10 00 0B 1E 14 24 82 93 24 20 06 20 82 93 22 20
-03 20 92 42 02 20 22 20 0E 95 8E 2F 92 42 22 20
-2C 20 92 42 24 20 2E 20 8F 43 00 00 03 3C 2A 4F
-B0 12 0A 5E 34 40 0C 40 35 40 00 40 3A 4F 3E 4F
-0A 93 05 24 7A 93 14 20 0C 93 02 20 3D 41 30 4D
-0D 12 87 12 00 46 0B 3C 20 4F 70 65 6E 45 72 72
-6F 72 56 45 74 43 F0 48 B8 45 80 45 AC 41 E0 5C
-1A 93 B6 20 0C 93 EC 23 30 4D 4E 5F 04 52 45 41
-44 00 2F 83 8F 4E 00 00 1E 42 32 20 B0 12 92 5D
-1E 82 32 20 30 4D 2C 43 12 12 2A 20 18 42 02 20
-08 58 2A 41 82 9A 0A 20 A1 24 B0 12 4A 5C 09 43
-28 93 03 24 89 93 02 1E 03 20 89 93 00 1E 07 24
-09 58 39 90 00 02 F4 23 91 53 00 00 EA 3F 0C 43
-6A 41 B9 43 00 1E 28 93 0F 24 B9 40 FF 0F 02 1E
-09 11 8A 10 09 5A 5A 41 01 00 0A 11 09 10 82 4A
-28 20 82 49 26 20 07 3C 09 11 C2 49 26 20 C2 4A
-27 20 82 43 28 20 3A 41 82 4A 2A 20 30 41 0A 12
-1A 52 08 20 B0 12 8A 5C 3A 41 1A 52 0C 20 30 40
-8A 5C F2 B0 40 00 A2 04 29 20 F2 B0 10 00 A2 04
-FC 27 5A 42 B0 04 4A 11 59 42 B4 04 F2 40 20 00
-C0 04 D2 42 B1 04 C8 04 1A 52 E4 04 D2 42 B5 04
-C8 04 19 52 E4 04 D2 42 B2 04 C0 04 B2 40 00 08
-C8 04 1A 52 E4 04 92 42 B6 04 C0 04 B2 80 BC 07
-C0 04 B2 40 00 02 C8 04 19 52 E4 04 30 41 22 2A
-2B 2C 2F 3A 3B 3C 3D 3E 3F 5B 5C 5D 7C 2E 29 92
-06 38 39 80 03 00 B0 12 8E 62 39 40 03 00 7A 4B
-C8 4A 00 1E 82 9B 36 20 12 28 0D 12 3D 40 0F 00
-3C 40 3E 62 7A 9C F3 27 1D 83 FC 23 3D 41 6A 9C
-E6 27 3A 80 21 00 EB 3B 18 53 19 83 E8 23 09 93
-06 24 F8 40 20 00 00 1E 18 53 19 83 FA 23 30 41
-2A 93 EC 20 2C 93 0E 24 0C 93 BB 24 0D 12 87 12
-00 46 0C 3C 20 57 72 69 74 65 45 72 72 6F 72 00
-AC 41 22 61 B0 12 56 61 92 42 26 20 22 20 92 42
-28 20 24 20 B0 12 CE 61 B0 12 00 5E 18 42 30 20
-F8 40 20 00 0B 1E B0 12 E2 61 88 43 0C 1E 88 4A
-0E 1E 88 49 10 1E 88 49 12 1E 98 42 24 20 14 1E
-98 42 22 20 1A 1E 88 43 1C 1E 88 43 1E 1E 1C 43
-1B 42 34 20 82 9B 36 20 C9 27 FB 90 2E 00 00 00
-C5 27 39 40 0B 00 B0 12 5E 62 B0 12 7C 63 2A 43
-B0 12 0A 5E 0C 93 BA 23 30 4D 1A 4B 04 00 19 4B
-06 00 B0 12 50 5C B0 12 E2 61 18 4B 08 00 88 49
-12 1E 88 4A 16 1E 88 49 18 1E 98 4B 12 00 1C 1E
-98 4B 14 00 1E 1E 1A 4B 04 00 19 4B 06 00 30 40
-8C 5C 9B 52 1E 20 12 00 8B 63 14 00 1A 42 1A 20
-19 42 1C 20 30 40 8C 5C B2 40 00 02 1E 20 1B 42
-32 20 B0 12 72 63 82 43 1E 20 DB 53 03 00 DB 92
-12 20 03 00 22 20 CB 43 03 00 B0 12 F2 5C 08 12
-0A 12 B0 12 56 61 2A 91 05 24 B0 12 CE 61 2A 41
-B0 12 4A 5C 3A 41 38 41 98 42 26 20 00 1E 92 93
-02 20 03 24 98 42 28 20 02 1E B0 12 CE 61 9B 42
-26 20 0E 00 9B 42 28 20 10 00 30 40 60 5D 5A 5F
-05 57 52 49 54 45 B0 12 88 63 30 4D 3C 61 07 53
-44 5F 45 4D 49 54 B2 90 00 02 1E 20 02 28 B0 12
-88 63 18 42 1E 20 C8 4E 00 1E 92 53 1E 20 3E 4F
-30 4D 58 4B 13 00 59 4B 14 00 89 10 09 58 58 4B
-15 00 5B 42 12 20 0A 43 3C 42 08 11 09 10 4A 10
-1C 83 0B 11 FA 2B 0A 11 1C 83 FD 37 1B 42 32 20
-19 5B 0A 00 18 6B 0C 00 8B 49 0E 00 8B 48 10 00
-CB 4A 03 00 1A 4B 12 00 BB C0 FF 01 12 00 3A F0
-FF 01 82 4A 1E 20 B0 12 FC 5D 30 4D 0C 93 38 20
-38 90 E0 01 03 2C C8 93 20 1E 02 24 7C 40 E5 00
-C8 4C 00 1E B0 12 7C 63 B0 12 FE 5C 82 4A 2A 20
-0B 4A B0 12 4A 5C 1A 48 00 1E 88 43 00 1E 92 93
-02 20 09 24 19 48 02 1E 88 43 02 1E 39 F0 FF 0F
-39 90 FF 0F 02 20 3A 93 0E 24 82 4A 22 20 82 49
-24 20 B0 12 FE 5C 0B 9A E6 27 0A 12 0A 4B B0 12
-CE 61 3A 41 DD 3F 0A 4B B0 12 CE 61 B0 12 E8 5E
-30 4D 98 4E 08 54 45 52 4D 32 53 44 22 00 0D 12
-87 12 6E 5F 2C 40 02 00 74 43 F0 48 C0 5F 10 65
-3D 41 92 C3 DC 05 08 43 B0 12 A4 44 92 B3 DC 05
-FD 27 59 42 CC 05 69 92 0D 24 C8 49 00 1E 18 53
-38 90 FF 01 F3 2B 03 24 B0 12 88 63 EC 3F B0 12
-B6 44 EC 3F B0 12 B6 44 82 48 1E 20 B0 12 E8 5E
-3D 41 30 4D D6 4D 0A 7B 53 44 5F 54 4F 4F 4C 53
-7D 00 30 4D FE 63 06 53 45 43 54 4F 52 00 09 4E
-2A 4F B0 12 50 5C 0D 12 87 12 42 42 D4 42 F0 42
-B8 45 80 45 2C 40 00 1E 2C 40 00 02 6C 67 22 40
-74 5F 07 43 4C 55 53 54 45 52 82 4E 24 20 A2 4F
-22 20 B0 12 20 5D 9F 42 1A 20 00 00 1E 42 1C 20
-DE 3F FC 4F 03 46 41 54 2F 82 8F 4E 02 00 9F 42
-08 20 00 00 0E 43 D3 3F 68 5F 03 44 49 52 2F 82
-8F 4E 02 00 92 42 2C 20 22 20 92 42 2E 20 24 20
-E0 3F 56 65 07 7B 54 4F 4F 4C 53 7D 30 4D 9E 54
-03 41 4E 44 3E FF 30 4D 5A 50 02 2E 53 00 8F 4E
-FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
-8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
-2C 40 3C 00 4A 45 5E 43 2C 40 08 00 4A 45 2C 40
-3E 00 4A 45 80 45 82 40 82 40 8E 41 BA 41 46 66
-5A 40 5A 40 22 40 C0 41 F8 41 EA 40 26 43 2C 40
-02 00 D0 41 48 66 22 40 FA 65 03 2E 52 53 8F 4E
-FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 47 01 3F
-2E 4E 30 40 26 43 E6 50 03 50 41 44 85 12 E4 1C
-F0 63 05 57 4F 52 44 53 0D 12 87 12 FC 45 2C 40
-03 00 96 45 2C 40 D0 1D EA 40 7C 66 2C 40 10 00
-3C 40 18 41 8A 4F 2C 40 00 00 3C 40 2C 40 10 00
-3C 40 18 41 2C 40 00 00 C0 41 3C 40 F8 41 7C 66
-18 41 EA 40 A4 41 B0 41 D8 66 5A 40 5A 40 F8 41
-3C 40 7C 66 18 41 EA 40 2C 40 02 00 D0 41 BA 66
-4C 40 B0 41 1A 67 3C 40 2C 40 02 00 20 41 EA 40
-92 40 7C 66 18 41 F2 40 3C 40 F0 48 2C 40 7F 00
-F4 65 B8 45 00 41 2C 40 0F 00 F4 65 2C 40 10 00
-70 40 20 41 96 45 AC 41 A6 66 5A 40 22 40 82 5F
-03 4D 41 58 2E 9F 07 38 2F 53 30 4D 20 67 03 4D
-49 4E 2E 9F F9 3B 3E 4F 30 4D F4 64 03 55 2E 52
-0D 12 87 12 A8 40 42 42 2C 40 00 00 A2 42 D4 42
-F0 42 B4 40 82 40 20 41 2C 40 00 00 24 67 96 45
-B8 45 22 40 CA 65 04 44 55 4D 50 00 0D 12 12 12
-E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 40 82 40
-82 40 26 43 2C 40 01 00 20 41 26 43 2C 40 FE FF
-F4 65 C0 41 FC 45 F8 41 2C 40 07 00 40 67 80 45
-F8 41 2C 40 10 00 18 41 F8 41 C0 41 F8 41 00 41
-2C 40 03 00 40 67 E2 41 AC 67 80 45 80 45 F8 41
-2C 40 10 00 18 41 F8 41 C0 41 F8 41 00 41 2C 40
-7E 00 32 67 20 42 24 67 4A 45 E2 41 CA 67 2C 40
-10 00 D0 41 94 67 B4 40 2C 42 F2 40 22 40
+3E 4F 3D 41 30 4D 30 50 09 50 57 52 5F 53 54 41
+54 45 84 12 6C 50 30 54 A4 67 C8 4E 09 52 53 54
+5F 53 54 41 54 45 92 42 0E 18 B6 50 92 42 0C 18
+B8 50 EF 3F A8 50 08 50 57 52 5F 48 45 52 45 00
+92 42 C8 1D B6 50 92 42 C6 1D B8 50 30 4D BC 50
+08 52 53 54 5F 48 45 52 45 00 92 42 C8 1D 0E 18
+92 42 C6 1D 0C 18 EC 3F AC 4F 04 57 49 50 45 00
+39 40 10 00 29 83 B9 43 80 FF FC 23 B0 12 D2 49
+B2 40 A4 67 0C 18 B2 40 30 54 0E 18 CC 3F 0A 51
+04 57 41 52 4D 00 30 40 3A 51 1E 42 08 18 0D 12
+87 12 D0 45 06 0D 1B 5B 37 6D 23 00 90 45 5E 43
+D0 45 1F 46 61 73 74 46 6F 72 74 68 20 56 32 30
+36 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E
+73 20 90 45 2C 40 30 FF 74 43 20 41 26 43 D0 45
+0B 62 79 74 65 73 20 66 72 65 65 20 36 4A 7C 4E
+04 43 4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A
+5C 01 B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0
+03 00 06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43
+22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3
+66 02 F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01
+F2 40 10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01
+B2 40 48 00 62 01 82 43 66 01 39 40 00 01 B2 40
+33 00 64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93
+08 18 01 24 59 07 38 40 59 14 18 83 FE 23 19 83
+FA 23 B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00
+A1 04 F2 C0 40 00 A2 04 39 40 4C 00 29 83 B9 40
+9C 51 B4 FF FB 23 B2 40 C0 44 F0 FF B2 40 18 00
+0A 18 39 40 00 10 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 40 36 40 B4 40 35 40
+00 40 34 40 0C 40 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 CC 52 38 90 0A 00 28 27
+38 90 16 00 25 2F 28 93 FE 22 F3 26 CE 52 E2 B2
+60 02 31 23 B2 40 81 A9 40 06 B2 40 30 00 46 06
+D2 D3 25 02 B2 D0 C0 04 0C 02 92 C3 40 06 39 42
+B0 12 DE 5B D2 C3 23 02 2C 42 B2 40 95 00 14 20
+B2 40 00 40 18 20 B0 12 54 5B 02 24 30 40 7A 5C
+B0 12 DC 5B 7A 93 FC 23 B2 40 87 AA 14 20 92 43
+16 20 B2 40 00 48 18 20 B0 12 54 5B 29 42 B0 12
+DE 5B 92 43 14 20 82 43 16 20 78 43 3C 42 B2 40
+00 77 18 20 B0 12 54 5B B2 40 40 69 18 20 B0 12
+9A 5B 03 24 58 83 F3 23 D9 3F 0C 5C A2 43 16 20
+B2 40 00 50 18 20 B0 12 9A 5B D0 23 92 D3 40 06
+82 43 46 06 92 C3 40 06 B0 12 04 5C 38 40 00 1E
+92 48 C6 01 04 20 92 48 C8 01 06 20 5A 48 C2 01
+92 43 02 20 7A 80 06 00 0D 24 7A 82 0B 24 A2 43
+02 20 6A 53 07 24 5A 53 05 24 3A 50 0B 20 0C 4A
+30 40 80 5C B0 12 04 5C D2 48 0D 00 12 20 19 48
+0E 00 82 49 08 20 1A 48 16 00 0A 93 02 20 1A 48
+24 00 82 4A 0A 20 09 5A 82 49 0C 20 09 5A A2 93
+02 20 04 24 82 49 0E 20 39 50 20 00 19 82 12 20
+19 82 12 20 82 49 10 20 92 42 02 20 2C 20 9B 3E
+1A 50 09 41 53 53 45 4D 42 4C 45 52 84 12 E2 4F
+30 5A 9E 5A E4 59 08 5B AA 59 30 5B C4 56 00 00
+A0 59 54 5A 02 5A 42 5A D4 57 00 00 00 00 40 5B
+16 50 2C 4E 85 48 49 32 4C 4F 0D 12 87 12 74 43
+44 4E 78 48 DE 4A 20 50 0C 54 22 40 90 51 04 43
+4F 44 45 00 B0 12 0A 4C A2 82 C6 1D 0D 12 87 12
+FC 4B AC 41 46 54 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 3A 50 92 4B 22 40 02 54 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 10 54 DA 1D E3 3F 68 54
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 3A 50 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 4E 54 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 D4 4B DE 4A EA 54 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 54 46 B2 46 BA 41
+2A 55 6C 47 B0 41 CC 4A 4C 55 2C 55 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 16 55 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 54 46 6C 47 B0 41 88 55 7E 55 21 53
+3E 90 10 00 84 2D E2 2B 8A 55 B2 41 C4 1D DE 3F
+0D 12 87 12 20 42 F4 54 9A 55 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 16 55 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 16 55 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 68 55 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+68 55 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 68 55 FA 23 3C 50 10 00 B0 12
+50 55 EF 3F 0D 12 87 12 20 42 F4 54 6E 56 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 68 55 E5 23 3C 50 80 00 B0 12 50 55 E0 3F
+B0 44 04 52 45 54 49 00 0D 12 87 12 2C 40 00 13
+78 48 22 40 2C 40 2C 00 90 55 64 56 AE 56 2E 4E
+0E DC 09 4B A5 3F C6 54 03 4D 4F 56 84 12 A4 56
+00 40 B8 56 05 4D 4F 56 2E 42 84 12 A4 56 40 40
+00 00 03 41 44 44 84 12 A4 56 00 50 D2 56 05 41
+44 44 2E 42 84 12 A4 56 40 50 DE 56 04 41 44 44
+43 00 84 12 A4 56 00 60 EC 56 06 41 44 44 43 2E
+42 00 84 12 A4 56 40 60 92 56 04 53 55 42 43 00
+84 12 A4 56 00 70 0A 57 06 53 55 42 43 2E 42 00
+84 12 A4 56 40 70 18 57 03 53 55 42 84 12 A4 56
+00 80 28 57 05 53 55 42 2E 42 84 12 A4 56 40 80
+A2 54 03 43 4D 50 84 12 A4 56 00 90 42 57 05 43
+4D 50 2E 42 84 12 A4 56 40 90 90 54 04 44 41 44
+44 00 84 12 A4 56 00 A0 5C 57 06 44 41 44 44 2E
+42 00 84 12 A4 56 40 A0 4E 57 03 42 49 54 84 12
+A4 56 00 B0 7A 57 05 42 49 54 2E 42 84 12 A4 56
+40 B0 86 57 03 42 49 43 84 12 A4 56 00 C0 94 57
+05 42 49 43 2E 42 84 12 A4 56 40 C0 A0 57 03 42
+49 53 84 12 A4 56 00 D0 AE 57 05 42 49 53 2E 42
+84 12 A4 56 40 D0 00 00 03 58 4F 52 84 12 A4 56
+00 E0 C8 57 05 58 4F 52 2E 42 84 12 A4 56 40 E0
+FA 56 03 41 4E 44 84 12 A4 56 00 F0 E2 57 05 41
+4E 44 2E 42 84 12 A4 56 40 F0 20 42 90 55 00 58
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+34 57 03 52 52 43 84 12 FA 57 00 10 12 58 05 52
+52 43 2E 42 84 12 FA 57 40 10 1E 58 04 53 57 50
+42 00 84 12 FA 57 80 10 2C 58 03 52 52 41 84 12
+FA 57 00 11 3A 58 05 52 52 41 2E 42 84 12 FA 57
+40 11 46 58 03 53 58 54 84 12 FA 57 80 11 00 00
+04 50 55 53 48 00 84 12 FA 57 00 12 60 58 06 50
+55 53 48 2E 42 00 84 12 FA 57 40 12 BA 57 04 43
+41 4C 4C 00 84 12 FA 57 80 12 1A 53 0E 4A 0D 12
+87 12 5E 43 D0 45 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 20 4A 20 42 F4 54 AC 58 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 54 46 6C 47 B0 41 CC 4A CC 58 1B 17 87 12
+64 56 D4 58 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+54 58 04 52 52 43 4D 00 84 12 A6 58 50 00 02 59
+04 52 52 41 4D 00 84 12 A6 58 50 01 10 59 04 52
+4C 41 4D 00 84 12 A6 58 50 02 1E 59 04 52 52 55
+4D 00 84 12 A6 58 50 03 6E 58 05 50 55 53 48 4D
+84 12 A6 58 00 15 3A 59 04 50 4F 50 4D 00 84 12
+A6 58 00 17 85 12 00 3C 2C 59 03 53 3E 3D 85 12
+00 38 5A 59 02 53 3C 00 85 12 00 34 48 59 03 30
+3E 3D 85 12 00 30 6E 59 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C 82 59 03 55 3E 3D
+85 12 00 28 78 59 03 30 3C 3E 85 12 00 24 96 59
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D 8C 59
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 6A 57 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+C0 59 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D EE 57
+05 41 47 41 49 4E 0D 12 87 12 54 59 08 5A 22 40
+00 00 05 57 48 49 4C 45 0D 12 87 12 AE 59 70 40
+22 40 64 59 06 52 45 50 45 41 54 00 0D 12 87 12
+54 59 08 5A C6 59 22 40 6A 5A 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D 7E 58 03 42 57 31 84 12 68 5A E2 1D
+86 5A 03 42 57 32 84 12 68 5A E4 1D 92 5A 03 42
+57 33 84 12 68 5A E6 1D AA 5A 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 A8 5A E8 1D CE 5A 03 46 57 32 84 12
+A8 5A EA 1D DA 5A 03 46 57 33 84 12 A8 5A EC 1D
+3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
+3E E0 00 08 30 4D E6 5A 04 47 4F 54 4F 00 0D 12
+87 12 54 59 BC 4A 6E 48 22 40 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 F0 5A BC 4A 6E 48 22 40 00 00
+03 4A 4D 50 0D 12 87 12 BC 4A 36 5A 22 40 1C 5B
+04 3F 4A 4D 50 00 0D 12 87 12 F0 5A BC 4A 70 40
+08 5A 22 40 1A 43 25 3C D2 C3 23 02 E2 B2 60 02
+02 24 30 40 96 51 1A 52 04 20 19 62 06 20 92 43
+14 20 A2 93 02 20 07 24 0A 5A 49 69 82 4A 16 20
+C2 49 18 20 0A 3C C2 4A 15 20 8A 10 C2 4A 16 20
+C2 49 17 20 89 10 C2 49 18 20 B0 12 DC 5B 5A 53
+FC 23 39 40 05 00 D2 49 14 20 4E 06 82 93 46 06
+05 24 92 B3 6C 06 FD 27 C2 93 4C 06 59 83 F3 2F
+19 83 0B 30 F2 43 4E 06 82 93 46 06 03 24 92 B3
+6C 06 FD 27 5A 92 4C 06 F3 23 30 41 19 43 3A 43
+8A 10 C2 4A 4E 06 82 93 46 06 05 24 92 B3 6C 06
+FD 27 C2 93 4C 06 19 83 F3 23 5A 42 4C 06 30 41
+1A 52 08 20 09 43 1C D3 F2 40 51 00 19 20 B0 12
+58 5B 33 20 B0 12 DC 5B 6A 53 04 24 FB 23 D9 42
+4C 06 FF 1D F2 43 4E 06 03 43 19 53 39 90 01 02
+F6 23 F2 43 4E 06 3C C0 03 00 D2 D3 23 02 30 41
+09 43 2C D3 F0 40 58 00 D1 C3 B0 12 58 5B 15 20
+3A 40 FE FF 29 43 B0 12 E0 5B D2 49 00 1E 4E 06
+03 43 19 53 39 90 00 02 F8 23 39 40 03 00 B0 12
+DE 5B 7A C0 E1 00 6A 92 DE 27 8C 10 1C 52 4C 06
+D2 D3 23 02 0D 12 87 12 D0 45 0B 3C 20 53 44 20
+45 72 72 6F 72 21 98 5C 2F 83 B2 40 10 00 DC 1D
+0E 4C 87 12 26 43 20 4A 92 4B 0E 00 22 20 92 4B
+10 00 24 20 5A 42 23 20 58 42 22 20 92 93 02 20
+08 24 59 42 24 20 89 10 0A 59 88 10 08 58 0A 6A
+88 10 08 58 30 41 82 43 1C 20 92 42 0E 20 1A 20
+C2 93 24 20 03 20 92 93 22 20 14 24 92 42 22 20
+D0 04 92 42 24 20 D2 04 92 42 12 20 C8 04 92 42
+E4 04 1A 20 92 42 E6 04 1C 20 92 52 10 20 1A 20
+82 63 1C 20 30 41 92 4B 0E 00 22 20 92 4B 10 00
+24 20 B0 12 D6 5C 5A 4B 03 00 82 5A 1A 20 82 63
+1C 20 30 41 09 93 07 24 F8 90 20 00 00 1E 03 20
+18 53 19 83 F9 23 30 41 1B 42 32 20 82 43 1E 20
+B2 90 00 02 20 20 A3 20 BB 80 00 02 12 00 8B 73
+14 00 DB 53 03 00 DB 92 12 20 03 00 11 28 CB 43
+03 00 B0 12 A8 5C B0 12 00 5C 8B 43 10 00 9B 48
+00 1E 0E 00 92 93 02 20 03 24 9B 48 02 1E 10 00
+B2 40 00 02 20 20 8B 93 14 00 0B 20 92 9B 12 00
+1E 20 7D 2C BB 90 00 02 12 00 03 2C 92 4B 12 00
+20 20 B0 12 16 5D 1A 42 1A 20 19 42 1C 20 23 3F
+3C 42 3B 40 40 20 09 43 CB 93 02 00 10 24 9B 92
+24 20 0C 00 04 20 9B 92 22 20 0A 00 07 24 09 4B
+3B 50 18 00 3B 90 00 21 EF 23 0C 5C 30 41 0C 43
+82 4B 32 20 8B 49 00 00 49 93 0A 24 99 52 C4 1D
+16 00 4A 93 05 34 C9 93 02 00 02 34 5A 59 02 00
+CB 4A 02 00 CB 43 03 00 9B 42 1A 20 04 00 9B 42
+1C 20 06 00 18 42 30 20 8B 48 08 00 9B 48 1A 1E
+0A 00 9B 48 14 1E 0C 00 9B 48 1A 1E 0E 00 9B 48
+14 1E 10 00 9B 48 1C 1E 12 00 9B 48 1E 1E 14 00
+82 43 1E 20 6A 93 5F 27 C9 37 8B 43 16 00 7A 93
+02 24 0A 38 95 3F B2 40 3C 21 34 44 B2 40 CE 43
+5A 44 B2 40 02 21 00 21 18 42 00 21 B2 50 06 00
+00 21 19 42 C4 1D 1A 42 C0 1D 0A 89 88 4A 00 00
+19 52 C2 1D 88 49 02 00 88 4D 04 00 79 3F 1B 42
+32 20 0B 93 A3 27 EB 93 02 00 04 20 B0 12 28 63
+B0 12 F0 62 5A 4B 02 00 CB 43 02 00 09 4B 2B 4B
+82 4B 32 20 7A 93 07 20 B2 40 3C 1D 34 44 B2 40
+5C 44 5A 44 0A 3C 0B 93 89 27 CB 93 02 00 86 37
+92 4B 16 00 1E 20 B0 12 90 5D 21 52 2F 53 B2 80
+06 00 00 21 1A 42 00 21 3E 4A BF 4A 00 00 3D 4A
+30 4D F0 50 85 52 45 41 44 22 5A 43 19 3C 30 51
+86 57 52 49 54 45 22 00 6A 43 12 3C 58 50 84 44
+45 4C 22 00 6A 42 0C 3C D8 54 05 43 4C 4F 53 45
+B0 12 9E 5E 30 4D 74 4F 85 4C 4F 41 44 22 7A 43
+2F 83 8F 4E 00 00 0E 4A 82 93 BE 1D 0C 24 0D 12
+87 12 2C 40 2C 40 78 48 78 48 EE 45 0C 46 2C 40
+76 5F 78 48 22 40 0D 12 87 12 2C 40 22 00 54 46
+C0 48 74 5F 3D 41 35 4F 0E 55 82 4E 36 20 1C 43
+92 42 2C 20 22 20 92 42 2E 20 24 20 0E 95 8D 24
+F5 90 3A 00 01 00 01 20 25 53 F5 90 5C 00 00 00
+08 20 15 53 92 42 02 20 22 20 82 43 24 20 0E 95
+70 24 82 45 34 20 B0 12 D6 5C 34 40 20 00 A2 93
+02 20 04 24 92 92 22 20 02 20 02 24 14 42 12 20
+B0 12 B6 5D 2C 43 0A 43 08 4A 58 0E 08 58 82 48
+30 20 C8 93 00 1E 61 24 39 42 F8 95 00 1E 04 20
+18 53 19 83 FA 23 15 53 F5 90 2E 00 FF FF 19 24
+39 50 03 00 B0 12 34 5D 06 20 F5 90 5C 00 FF FF
+29 24 0E 95 27 28 15 42 34 20 1A 53 3A 90 10 00
+DB 23 92 53 1A 20 82 63 1C 20 14 83 D1 23 2C 42
+3C 3C F5 90 2E 00 FE FF EE 27 B0 12 34 5D EB 23
+39 40 03 00 F8 95 00 1E 04 20 18 53 19 83 FA 23
+09 3C 0E 95 E0 2F F5 90 5C 00 FF FF DC 23 B0 12
+34 5D D9 23 18 42 30 20 92 48 1A 1E 22 20 92 48
+14 1E 24 20 F8 B0 10 00 0B 1E 14 24 82 93 24 20
+06 20 82 93 22 20 03 20 92 42 02 20 22 20 0E 95
+8E 2F 92 42 22 20 2C 20 92 42 24 20 2E 20 8F 43
+00 00 03 3C 2A 4F B0 12 C0 5D 34 40 0C 40 35 40
+00 40 3A 4F 3E 4F 0A 93 05 24 7A 93 14 20 0C 93
+02 20 3D 41 30 4D 0D 12 87 12 D0 45 0B 3C 20 4F
+70 65 6E 45 72 72 6F 72 2E 45 74 43 C0 48 90 45
+58 45 AC 41 96 5C 1A 93 B6 20 0C 93 EC 23 30 4D
+04 5F 04 52 45 41 44 00 2F 83 8F 4E 00 00 1E 42
+32 20 B0 12 48 5D 1E 82 32 20 30 4D 2C 43 12 12
+2A 20 18 42 02 20 08 58 2A 41 82 9A 0A 20 A1 24
+B0 12 00 5C 09 43 28 93 03 24 89 93 02 1E 03 20
+89 93 00 1E 07 24 09 58 39 90 00 02 F4 23 91 53
+00 00 EA 3F 0C 43 6A 41 B9 43 00 1E 28 93 0F 24
+B9 40 FF 0F 02 1E 09 11 8A 10 09 5A 5A 41 01 00
+0A 11 09 10 82 4A 28 20 82 49 26 20 07 3C 09 11
+C2 49 26 20 C2 4A 27 20 82 43 28 20 3A 41 82 4A
+2A 20 30 41 0A 12 1A 52 08 20 B0 12 40 5C 3A 41
+1A 52 0C 20 30 40 40 5C F2 B0 40 00 A2 04 29 20
+F2 B0 10 00 A2 04 FC 27 5A 42 B0 04 4A 11 59 42
+B4 04 F2 40 20 00 C0 04 D2 42 B1 04 C8 04 1A 52
+E4 04 D2 42 B5 04 C8 04 19 52 E4 04 D2 42 B2 04
+C0 04 B2 40 00 08 C8 04 1A 52 E4 04 92 42 B6 04
+C0 04 B2 80 BC 07 C0 04 B2 40 00 02 C8 04 19 52
+E4 04 30 41 22 2A 2B 2C 2F 3A 3B 3C 3D 3E 3F 5B
+5C 5D 7C 2E 29 92 06 38 39 80 03 00 B0 12 44 62
+39 40 03 00 7A 4B C8 4A 00 1E 82 9B 36 20 12 28
+0D 12 3D 40 0F 00 3C 40 F4 61 7A 9C F3 27 1D 83
+FC 23 3D 41 6A 9C E6 27 3A 80 21 00 EB 3B 18 53
+19 83 E8 23 09 93 06 24 F8 40 20 00 00 1E 18 53
+19 83 FA 23 30 41 2A 93 EC 20 2C 93 0E 24 0C 93
+BB 24 0D 12 87 12 D0 45 0C 3C 20 57 72 69 74 65
+45 72 72 6F 72 00 AC 41 D8 60 B0 12 0C 61 92 42
+26 20 22 20 92 42 28 20 24 20 B0 12 84 61 B0 12
+B6 5D 18 42 30 20 F8 40 20 00 0B 1E B0 12 98 61
+88 43 0C 1E 88 4A 0E 1E 88 49 10 1E 88 49 12 1E
+98 42 24 20 14 1E 98 42 22 20 1A 1E 88 43 1C 1E
+88 43 1E 1E 1C 43 1B 42 34 20 82 9B 36 20 C9 27
+FB 90 2E 00 00 00 C5 27 39 40 0B 00 B0 12 14 62
+B0 12 32 63 2A 43 B0 12 C0 5D 0C 93 BA 23 30 4D
+1A 4B 04 00 19 4B 06 00 B0 12 06 5C B0 12 98 61
+18 4B 08 00 88 49 12 1E 88 4A 16 1E 88 49 18 1E
+98 4B 12 00 1C 1E 98 4B 14 00 1E 1E 1A 4B 04 00
+19 4B 06 00 30 40 42 5C 9B 52 1E 20 12 00 8B 63
+14 00 1A 42 1A 20 19 42 1C 20 30 40 42 5C B2 40
+00 02 1E 20 1B 42 32 20 B0 12 28 63 82 43 1E 20
+DB 53 03 00 DB 92 12 20 03 00 22 20 CB 43 03 00
+B0 12 A8 5C 08 12 0A 12 B0 12 0C 61 2A 91 05 24
+B0 12 84 61 2A 41 B0 12 00 5C 3A 41 38 41 98 42
+26 20 00 1E 92 93 02 20 03 24 98 42 28 20 02 1E
+B0 12 84 61 9B 42 26 20 0E 00 9B 42 28 20 10 00
+30 40 16 5D 10 5F 05 57 52 49 54 45 B0 12 3E 63
+30 4D F2 60 07 53 44 5F 45 4D 49 54 B2 90 00 02
+1E 20 02 28 B0 12 3E 63 18 42 1E 20 C8 4E 00 1E
+92 53 1E 20 3E 4F 30 4D 58 4B 13 00 59 4B 14 00
+89 10 09 58 58 4B 15 00 5B 42 12 20 0A 43 3C 42
+08 11 09 10 4A 10 1C 83 0B 11 FA 2B 0A 11 1C 83
+FD 37 1B 42 32 20 19 5B 0A 00 18 6B 0C 00 8B 49
+0E 00 8B 48 10 00 CB 4A 03 00 1A 4B 12 00 BB C0
+FF 01 12 00 3A F0 FF 01 82 4A 1E 20 B0 12 B2 5D
+30 4D 0C 93 38 20 38 90 E0 01 03 2C C8 93 20 1E
+02 24 7C 40 E5 00 C8 4C 00 1E B0 12 32 63 B0 12
+B4 5C 82 4A 2A 20 0B 4A B0 12 00 5C 1A 48 00 1E
+88 43 00 1E 92 93 02 20 09 24 19 48 02 1E 88 43
+02 1E 39 F0 FF 0F 39 90 FF 0F 02 20 3A 93 0E 24
+82 4A 22 20 82 49 24 20 B0 12 B4 5C 0B 9A E6 27
+0A 12 0A 4B B0 12 84 61 3A 41 DD 3F 0A 4B B0 12
+84 61 B0 12 9E 5E 30 4D 88 4E 08 54 45 52 4D 32
+53 44 22 00 0D 12 87 12 24 5F 2C 40 02 00 74 43
+C0 48 76 5F C6 64 3D 41 92 C3 DC 05 08 43 B0 12
+90 44 92 B3 DC 05 FD 27 59 42 CC 05 69 92 0D 24
+C8 49 00 1E 18 53 38 90 FF 01 F3 2B 03 24 B0 12
+3E 63 EC 3F B0 12 A2 44 EC 3F B0 12 A2 44 82 48
+1E 20 B0 12 9E 5E 3D 41 30 4D C8 4D 0A 7B 53 44
+5F 54 4F 4F 4C 53 7D 00 30 4D B4 63 06 53 45 43
+54 4F 52 00 09 4E 2A 4F B0 12 06 5C 0D 12 87 12
+42 42 D4 42 F0 42 90 45 58 45 2C 40 00 1E 2C 40
+00 02 22 67 22 40 2A 5F 07 43 4C 55 53 54 45 52
+82 4E 24 20 A2 4F 22 20 B0 12 D6 5C 9F 42 1A 20
+00 00 1E 42 1C 20 DE 3F EC 4F 03 46 41 54 2F 82
+8F 4E 02 00 9F 42 08 20 00 00 0E 43 D3 3F 1E 5F
+03 44 49 52 2F 82 8F 4E 02 00 92 42 2C 20 22 20
+92 42 2E 20 24 20 E0 3F 0C 65 07 7B 54 4F 4F 4C
+53 7D 30 4D 7C 54 03 41 4E 44 3E FF 30 4D 4A 50
+02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF
+3E 40 80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F
+0E 11 0D 12 87 12 2C 40 3C 00 1C 45 5E 43 2C 40
+08 00 1C 45 2C 40 3E 00 1C 45 58 45 82 40 82 40
+8E 41 BA 41 FC 65 5A 40 5A 40 22 40 C0 41 F8 41
+EA 40 26 43 2C 40 02 00 D0 41 FE 65 22 40 B0 65
+03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C
+D2 3F CA 4C 01 3F 2E 4E 30 40 26 43 D6 50 03 50
+41 44 85 12 E4 1C A6 63 05 57 4F 52 44 53 0D 12
+87 12 BE 45 2C 40 03 00 6E 45 2C 40 CA 1D EA 40
+32 66 2C 40 10 00 3C 40 18 41 7A 4F 2C 40 00 00
+3C 40 2C 40 10 00 3C 40 18 41 2C 40 00 00 C0 41
+3C 40 F8 41 32 66 18 41 EA 40 A4 41 B0 41 8E 66
+5A 40 5A 40 F8 41 3C 40 32 66 18 41 EA 40 2C 40
+02 00 D0 41 70 66 4C 40 B0 41 D0 66 3C 40 2C 40
+02 00 20 41 EA 40 92 40 32 66 18 41 F2 40 3C 40
+C0 48 2C 40 7F 00 AA 65 90 45 00 41 2C 40 0F 00
+AA 65 2C 40 10 00 70 40 20 41 6E 45 AC 41 5C 66
+5A 40 22 40 38 5F 03 4D 41 58 2E 9F 07 38 2F 53
+30 4D D6 66 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
+AA 64 03 55 2E 52 0D 12 87 12 A8 40 42 42 2C 40
+00 00 A2 42 D4 42 F0 42 B4 40 82 40 20 41 2C 40
+00 00 DA 66 6E 45 90 45 22 40 80 65 04 44 55 4D
+50 00 0D 12 12 12 DC 1D B2 40 10 00 DC 1D 2E 5F
+87 12 70 40 82 40 82 40 26 43 2C 40 01 00 20 41
+26 43 2C 40 FE FF AA 65 C0 41 BE 45 F8 41 2C 40
+07 00 F6 66 58 45 F8 41 2C 40 10 00 18 41 F8 41
+C0 41 F8 41 00 41 2C 40 03 00 F6 66 E2 41 62 67
+58 45 58 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41
+F8 41 00 41 2C 40 7E 00 E8 66 20 42 DA 66 1C 45
+E2 41 80 67 2C 40 10 00 D0 41 4A 67 B4 40 2C 42
+F2 40 22 40
 @FFFE
-BA 51
+9C 51
 q
index 9fba841..9ea9509 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 D8 44 80 3E 50 C3 05 00 18 00 E4 67 48 54
-A4 44 B0 44 46 5C 82 5C
+10 00 03 00 00 21 80 3E 05 00 18 00 A4 67 30 54
+90 44 A2 44 06 5C 42 5C 00 00
+@2000
+00 00
 @4000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 41 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 41 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 41 02 42 4C 00
-85 12 20 00 1C 42 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 42 04 42 41 53 45 00 85 12 DC 1D
 C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 41 06 55 4D 2F
 4D 4F 44 00 30 12 5A 40 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 40 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 42
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 42
 02 23 53 00 0D 12 87 12 A2 42 DC 42 2D 83 09 93
@@ -53,401 +55,397 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 42 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 42 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 42 02 55 2E 00 0D 12 87 12 42 42 2C 40 00 00
-D4 42 F0 42 AC 45 74 45 22 40 3E 41 02 44 2E 00
+D4 42 F0 42 90 45 58 45 22 40 3E 41 02 44 2E 00
 0D 12 87 12 42 42 70 40 82 40 44 41 D4 42 92 40
-14 43 F0 42 AC 45 74 45 22 40 7C 40 01 2E 0E 93
+14 43 F0 42 90 45 58 45 22 40 7C 40 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 43 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 40 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 42 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 43 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 A4 44 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 B0 44 30 4D 08 42 03 4B
-45 59 30 40 AE 43 0D 12 3D 40 F6 43 1B 42 32 20
-9B 42 1E 20 16 00 1A 4F 02 00 8F 4E 00 00 0E 43
-19 42 1E 20 02 3C F8 43 2D 83 19 92 20 20 15 2C
-58 49 00 1E 19 53 78 90 20 00 08 2C 78 90 0A 00
-F4 23 82 49 1E 20 2F 53 3D 41 30 4D 2E 9F 6F 24
-CA 48 00 00 1A 53 1E 53 6A 3C 0A 12 B0 12 88 5D
-3A 41 DE 3F 92 43 03 43 49 42 85 12 3C 1D 3F 80
-06 00 8F 4E 04 00 3E 40 54 00 9F 42 3C 44 00 00
-AF 4F 02 00 05 3C 82 43 06 41 43 43 45 50 54 00
-30 40 70 44 A8 43 08 28 41 43 43 45 50 54 29 00
-3C 40 10 45 3B 40 E0 44 2D 15 0A 4E 2E 4F 0A 5E
-3B 40 0D 00 3C 40 20 00 3D 40 04 45 92 B3 DC 05
-05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
-C4 44 4D 15 B2 40 11 00 CE 05 E2 C2 23 02 30 41
-B2 40 13 00 CE 05 E2 D2 23 02 30 41 00 00 05 53
-4C 45 45 50 30 40 D2 44 00 00 07 28 53 4C 45 45
-50 29 12 D2 0A 18 F6 3F 21 52 3A 17 58 42 CC 05
-48 9C 08 2C 48 9B E4 27 78 92 0E 20 2E 9F 0C 24
-1E 83 05 3C 0E 9A 03 24 CE 48 00 00 1E 53 82 48
-CE 05 30 4D 06 45 2D 83 92 B3 DC 05 E7 23 FC 27
-B2 40 18 00 0A 18 82 93 E4 1D 02 24 92 53 E4 1D
-3E 8F 3D 41 30 4D 66 44 06 28 45 4D 49 54 29 00
-08 4E 3E 4F E4 3F 3C 43 04 45 4D 49 54 00 30 40
-30 45 38 45 04 45 43 48 4F 00 B2 40 82 48 FE 44
-82 43 E4 1D 30 4D 5C 43 06 4E 4F 45 43 48 4F 00
-B2 40 30 4D FE 44 92 43 E4 1D 30 4D 0E 43 05 53
-50 41 43 45 2F 83 8F 4E 00 00 3E 40 20 00 DF 3F
-6E 45 06 53 50 41 43 45 53 00 0E 93 09 24 0D 12
-3D 40 96 45 EF 3F 98 45 2D 83 1E 83 EB 23 3D 41
-3E 4F 30 4D 22 43 04 54 59 50 45 00 0E 93 0F 24
-1E 15 3D 40 C2 45 28 4F 7E 48 8F 48 00 00 2F 83
-BE 3F C4 45 2D 83 91 83 02 00 F5 23 1D 17 2F 53
-3E 4F 30 4D 28 45 04 28 43 52 29 00 0D 12 87 12
-F4 45 02 0D 0A 00 AC 45 22 40 36 44 02 43 52 00
-30 40 DC 45 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
-0D 5E 1D B3 0D 63 30 4D EC 45 07 43 41 50 53 5F
-4F 4E B2 43 B4 1D 30 4D 0A 46 08 43 41 50 53 5F
-4F 46 46 00 82 43 B4 1D 30 4D 82 45 82 53 22 00
-0D 12 87 12 2C 40 F4 45 9C 48 24 46 2C 40 22 00
-78 46 12 46 46 46 3D 41 6E 4E 1E 83 82 5E CC 1D
-3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D 58 45 82 2E
-22 00 0D 12 87 12 30 46 2C 40 AC 45 9C 48 22 40
-00 00 04 57 4F 52 44 00 3C 40 C6 1D 39 4C 3A 4C
-09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
-3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
-0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
-7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C8 1D 82 4A
-CA 1D 1E 42 CC 1D 08 8E CE 48 00 00 30 4D 00 00
-04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
-3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
-1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
-78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
-F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
-4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 40 34 40
-0C 40 30 4D 8C 41 07 3E 4E 55 4D 42 45 52 3C 4F
-38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C 7A 80 30 00
-7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
-0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
-19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
-E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
-0C 43 1B 42 E2 1D 32 C0 00 02 2D 15 09 43 08 43
-3D 40 E0 47 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
-7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
-6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
-6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
-E2 47 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
-FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
-00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
-09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
-07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
-0E 4B 2C 15 B0 12 58 42 2A 17 E6 3F 9F 4F 04 00
-02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
-E2 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
-02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
-02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
-00 02 01 20 2F 53 30 4D 44 45 07 45 58 45 43 55
-54 45 0A 4E 3E 4F 00 4A 1E 41 01 2C 1A 42 CC 1D
-A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D 9A 48 87 4C
-49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 CC 1D
-A2 52 CC 1D BA 40 2C 40 00 00 8A 4E 02 00 3E 4F
-32 B0 00 02 32 C0 00 02 F1 23 30 4D 1A 46 05 43
-4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
-30 4D 82 43 CA 1D 82 4E C6 1D B2 4F C8 1D 3E 4F
-30 4D 0D 12 87 12 F2 48 20 42 78 46 0E 49 3D 40
-16 49 E1 22 44 3E 18 49 0A 4E 3E 4F 3D 40 2E 49
-37 27 3D 40 08 49 1A E2 BE 1D B8 27 B2 23 30 49
-3E 4F 3D 40 08 49 BF 23 DE 53 00 00 68 4E 08 5E
-F8 40 3F 00 00 00 3D 40 DA 4B CC 3F 8A 48 08 45
-56 41 4C 55 41 54 45 00 39 40 C6 1D 3C 49 3B 49
-3A 49 3D 15 87 12 02 49 6A 49 B2 41 CA 1D B2 41
-C8 1D B2 41 C6 1D 3D 41 30 4D 94 41 04 51 55 49
-54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
-82 43 08 18 87 12 F4 45 05 0D 0A 6F 6B 20 AC 45
-3E 44 74 45 02 49 D6 40 68 41 F4 45 0D 73 74 61
-63 6B 20 65 6D 70 74 79 21 20 40 4A 2C 40 30 FF
-74 43 A4 41 F4 45 0B 46 52 41 4D 20 66 75 6C 6C
-21 20 40 4A 38 42 EA 40 B0 41 96 49 F4 45 05 0D
-0A 20 20 20 AC 41 9E 49 58 44 05 41 42 4F 52 54
-3F 40 80 1C C6 3F B2 40 40 51 9E 51 B2 40 D2 44
-C6 44 B2 40 30 45 40 45 B2 40 DC 45 F2 45 B2 40
-AE 43 D4 43 B2 40 3C 1D 3C 44 B2 40 70 44 62 44
-82 43 CE 5A 82 43 DA 5A 82 43 E6 5A 82 43 16 5B
-82 43 22 5B 82 43 2E 5B B2 40 0A 00 E2 1D 30 41
-8F 93 02 00 03 20 2F 52 3E 4F 30 4D B2 40 82 48
-FE 44 1B 42 32 20 0B 93 04 24 CB 43 02 00 2B 4B
-FA 3F B0 12 02 4A A2 B3 DC 05 FD 27 B2 40 11 00
-CE 05 E2 C2 23 02 92 C3 DC 05 38 40 A0 AA 39 42
-03 43 19 83 FD 23 18 83 FA 23 92 B3 DC 05 F3 23
-0D 12 87 12 F4 45 04 1B 5B 37 6D 00 AC 45 2C 40
-E4 1D EA 40 4C 40 B0 41 BA 4A F4 45 05 6C 69 6E
-65 3A AC 45 38 41 26 43 4A 45 AC 45 F4 45 04 1B
-5B 30 6D 00 AC 45 B6 50 12 46 F0 49 EA 49 86 41
-42 4F 52 54 22 00 0D 12 87 12 30 46 2C 40 40 4A
-9C 48 22 40 D0 46 01 27 0D 12 87 12 20 42 78 46
-D6 46 B0 41 F8 4A 22 40 38 49 3E 42 81 5C 92 42
-C6 1D CA 1D 30 4D 00 00 81 5B 82 43 BE 1D 30 4D
-FC 4A 01 5D B2 43 BE 1D 30 4D 08 4B 83 5B 27 5D
-0D 12 87 12 E8 4A 2C 40 2C 40 9C 48 9C 48 22 40
-BE 4F 02 00 3E 4F 30 4D D6 45 82 49 53 00 0D 12
-87 12 38 42 EA 40 B0 41 54 4B 20 4B 2C 40 30 4B
-9C 48 22 40 E8 4A 30 4B 22 40 3A 4B 09 49 4D 4D
-45 44 49 41 54 45 1A 42 B6 1D FA D0 80 00 00 00
-30 4D 2C 46 87 52 45 43 55 52 53 45 19 42 CC 1D
-99 42 BA 1D 00 00 A2 53 CC 1D 30 4D 7C 49 88 50
-4F 53 54 50 4F 4E 45 00 0D 12 87 12 20 42 78 46
-D6 46 4C 40 B0 41 F8 4A 68 41 B0 41 BA 4B 2C 40
-2C 40 9C 48 9C 48 2C 40 9C 48 9C 48 22 40 82 9F
-BC 1D 2C 25 0D 12 87 12 F4 45 0F 73 74 61 63 6B
-20 6D 69 73 6D 61 74 63 68 21 4C 4A 1C 4B 81 3B
-82 93 BE 1D 8C 27 0D 12 87 12 2C 40 22 40 9C 48
-BE 4B 0A 4B 22 40 BA 40 0D 12 FC FF BA 40 87 12
-FE FF B2 43 BE 1D 82 4F BC 1D 30 4D DE 4B 01 3A
-30 12 F6 4B 0D 12 87 12 52 46 20 42 78 46 20 4C
-08 4E 7A 4E 5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E
-3E F0 1E 00 09 5E 3E 4F 3D 41 82 48 B6 1D 82 49
-B8 1D 82 4A BA 1D 2A 52 82 4A CC 1D 30 41 72 46
-08 56 41 52 49 41 42 4C 45 00 B0 12 14 4C BA 40
-86 12 FC FF DF 3C DE 48 08 43 4F 4E 53 54 41 4E
-54 00 B0 12 14 4C BA 40 85 12 FC FF 8A 4E FE FF
-3E 4F D0 3C 68 4C 06 43 52 45 41 54 45 00 B0 12
-14 4C BA 40 85 12 FC FF 8A 4A FE FF C3 3C 4E 49
-05 44 4F 45 53 3E 1A 42 BA 1D BA 40 84 12 00 00
-8A 4D 02 00 3D 41 30 4D A0 4C 05 44 45 46 45 52
-B0 12 14 4C BA 40 30 40 FC FF BA 40 B6 4C FE FF
-A9 3C 86 4C 07 43 4F 4D 50 41 52 45 0C 4E 38 4F
-3B 4F 39 4F 0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83
-07 30 19 53 F9 98 FF FF F5 27 02 2C 3E 43 30 4D
-1E 43 30 4D 0E 4C 86 5B 54 48 45 4E 5D 00 30 4D
-06 4D 86 5B 45 4C 53 45 5D 00 0D 12 87 12 2C 40
-01 00 20 42 78 46 E4 48 3C 40 B0 41 86 4D 82 40
-82 40 F4 45 04 5B 49 46 5D 00 DC 4C BA 41 48 4D
-CE 45 2E 41 AC 41 7E 4D 82 40 82 40 F4 45 06 5B
-45 4C 53 45 5D 00 DC 4C BA 41 6C 4D CE 45 38 41
-3C 40 B0 41 7E 4D 2E 41 AC 41 7E 4D F4 45 06 5B
-54 48 45 4E 5D 00 DC 4C BA 41 7E 4D 38 41 4C 40
-BA 41 22 4D 22 40 CE 45 F4 45 05 0D 0A 6B 6F 20
-AC 45 3E 44 F2 48 AC 41 22 4D 12 4D 84 5B 49 46
-5D 00 0E 93 3E 4F B9 27 30 4D 9C 4D 8B 5B 55 4E
-44 45 46 49 4E 45 44 5D 0D 12 87 12 20 42 78 46
-D6 46 64 40 5C 41 22 40 AC 4D 89 5B 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 42 78 46 D6 46 64 40
-22 40 E4 4D 3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F
-6C 3D AE 48 06 4D 41 52 4B 45 52 00 B0 12 14 4C
-BA 40 84 12 FC FF BA 40 E2 4D FE FF 9A 42 CE 1D
-00 00 28 83 8A 48 02 00 A2 52 CC 1D 18 42 B6 1D
-19 42 B8 1D A8 49 FE FF 89 48 00 00 30 4D 5C 4B
-82 49 46 00 2F 83 8F 4E 00 00 1E 42 CC 1D A2 52
-CC 1D BE 40 B0 41 00 00 2E 53 30 4D BA 4C 84 45
-4C 53 45 00 A2 52 CC 1D 1A 42 CC 1D BA 40 AC 41
-FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D A6 45 84 54
-48 45 4E 00 9E 42 CC 1D 00 00 3E 4F 30 4D D4 4C
-85 42 45 47 49 4E 30 40 74 43 6E 4E 85 55 4E 54
-49 4C 39 40 B0 41 A2 52 CC 1D 1A 42 CC 1D 8A 49
-FC FF 8A 4E FE FF 3E 4F 30 4D CE 4A 85 41 47 41
-49 4E 39 40 AC 41 EF 3F 50 4C 85 57 48 49 4C 45
-0D 12 87 12 34 4E 70 40 22 40 74 4B 86 52 45 50
-45 41 54 00 0D 12 87 12 B2 4E 74 4E 22 40 4E 4E
-82 44 4F 00 2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42
-CC 1D BE 40 C0 41 FE FF A2 53 00 1C 1A 42 00 1C
-8A 43 00 00 30 4D F4 4D 84 4C 4F 4F 50 00 39 40
-E2 41 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 1E 42 00 1C A2 83 00 1C 2E 4E 0E 93 03 24
-8E 4A 00 00 F6 3F 3E 4F 30 4D CE 43 85 2B 4C 4F
-4F 50 39 40 D0 41 E5 3F 08 4F 85 4C 45 41 56 45
-1A 42 CC 1D BA 40 F2 41 00 00 BA 40 AC 41 02 00
-B2 50 06 00 CC 1D A2 53 00 1C 2A 52 19 42 00 1C
-89 4A 00 00 30 4D 4A 4F 04 4D 4F 56 45 00 0A 4E
-38 4F 39 4F 3E 4F 0A 93 11 24 08 99 0F 24 06 2C
-F8 49 00 00 18 53 1A 83 FB 23 30 4D 08 5A 09 5A
-19 83 18 83 E8 49 00 00 1A 83 FA 23 30 4D BA 4E
-0A 56 4F 43 41 42 55 4C 41 52 59 00 0D 12 87 12
-8E 4C 2C 40 10 00 2C 40 00 00 C0 41 2C 40 00 00
-9C 48 E2 41 CC 4F 74 43 2C 40 CE 1D 3C 40 EA 40
-9C 48 F2 40 A6 4C 2C 40 D0 1D F2 40 22 40 E6 4A
-05 46 4F 52 54 48 84 12 E6 4F E6 65 88 65 5C 67
-AA 65 4C 54 3C 4F 24 67 50 66 6E 66 5C 65 32 67
-78 66 00 00 DA 65 12 4B 64 66 00 00 AC 4E 04 41
-4C 53 4F 00 3A 40 0E 00 39 40 D0 1D 38 40 D2 1D
-B5 3F 8E 4B 08 50 52 45 56 49 4F 55 53 00 3A 40
-0E 00 39 40 D2 1D 38 40 D0 1D A2 3F 5E 46 04 4F
-4E 4C 59 00 82 43 D2 1D 30 4D E0 4E 0B 44 45 46
-49 4E 49 54 49 4F 4E 53 92 42 D0 1D E0 1D 30 4D
-F6 4F 54 50 68 50 78 50 3A 4E 82 4A CE 1D 2E 4E
-82 4E CC 1D 3D 40 10 00 09 4A 08 49 29 83 18 48
-FE FF 0E 98 FC 2B 89 48 00 00 1D 83 F6 23 2A 4A
-0A 93 F0 23 3E 4F 3D 41 30 4D 34 50 09 50 57 52
-5F 53 54 41 54 45 84 12 70 50 48 54 E4 67 CC 4E
-09 52 53 54 5F 53 54 41 54 45 92 42 0E 18 BA 50
-92 42 0C 18 BC 50 EF 3F AC 50 08 50 57 52 5F 48
-45 52 45 00 92 42 CE 1D BA 50 92 42 CC 1D BC 50
-30 4D C0 50 08 52 53 54 5F 48 45 52 45 00 92 42
-CE 1D 0E 18 92 42 CC 1D 0C 18 EC 3F B0 4F 04 57
-49 50 45 00 39 40 80 FF B9 43 00 00 29 53 39 90
-B4 FF FA 23 B0 12 F6 49 B2 40 E4 67 0C 18 B2 40
-48 54 0E 18 CA 3F 30 4E 06 28 57 41 52 4D 29 00
-1E 42 08 18 0D 12 87 12 F4 45 06 0D 1B 5B 37 6D
-23 00 AC 45 5E 43 F4 45 1F 46 61 73 74 46 6F 72
-74 68 20 56 32 30 35 20 28 43 29 4A 2E 4D 2E 54
-68 6F 6F 72 65 6E 73 20 AC 45 2C 40 30 FF 74 43
-20 41 26 43 F4 45 0B 62 79 74 65 73 20 66 72 65
-65 20 62 4A 0E 51 04 57 41 52 4D 00 30 40 40 51
-80 4E 04 43 4F 4C 44 00 B2 40 04 A5 20 01 B2 40
-88 5A 5C 01 B2 D0 03 00 04 02 B2 40 FC FF 02 02
-B2 C0 03 00 06 02 B2 D0 00 04 24 02 B2 D3 26 02
-B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02
-B2 D3 66 02 F2 43 26 03 F2 D3 22 03 F2 40 A5 00
-41 01 F2 40 10 00 40 01 D2 43 41 01 F2 40 A5 00
-61 01 B2 40 48 00 62 01 82 43 66 01 39 40 00 01
-B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01 08 18
-A2 93 08 18 01 24 59 07 38 40 59 14 18 83 FE 23
-19 83 FA 23 B2 42 B0 01 F2 D0 10 00 2A 03 F2 40
-A5 00 A1 04 F2 C0 40 00 A2 04 3A 40 AE 51 39 40
-B4 FF 89 4A 00 00 29 53 FC 23 92 42 02 18 F0 FF
-B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00 29 53
-39 90 FF 2B FA 2B 31 40 E0 1C 3F 40 80 1C 37 40
-22 40 36 40 B4 40 35 40 00 40 34 40 0C 40 B2 40
-0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42 08 18
-D2 B3 01 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 C0 05 B2 40 03 00 C6 05 B2 40 00 21 C8 05
-F2 D0 03 00 0D 02 92 C3 C0 05 92 D3 DA 05 3D 40
-E4 52 38 90 0A 00 1E 27 38 90 16 00 1B 2F 28 93
-F4 22 E9 26 E6 52 E2 B2 60 02 58 23 B2 40 81 A9
-40 06 B2 40 30 00 46 06 D2 D3 25 02 B2 D0 C0 04
-0C 02 92 C3 40 06 39 42 B0 12 1E 5C D2 C3 23 02
-2C 42 B2 40 95 00 14 20 B2 40 00 40 18 20 B0 12
-94 5B 02 24 30 40 BA 5C B0 12 1C 5C 7A 93 FC 23
-B2 40 87 AA 14 20 92 43 16 20 B2 40 00 48 18 20
-B0 12 94 5B 29 42 B0 12 1E 5C 92 43 14 20 82 43
-16 20 78 43 3C 42 B2 40 00 77 18 20 B0 12 94 5B
-B2 40 40 69 18 20 B0 12 DA 5B 03 24 58 83 F3 23
-D9 3F 0C 5C A2 43 16 20 B2 40 00 50 18 20 B0 12
-DA 5B D0 23 92 D3 40 06 82 43 46 06 92 C3 40 06
-B0 12 44 5C 38 40 00 1E 92 48 C6 01 04 20 92 48
-C8 01 06 20 5A 48 C2 01 92 43 02 20 7A 80 06 00
-0D 24 7A 82 0B 24 A2 43 02 20 6A 53 07 24 5A 53
-05 24 3A 50 0B 20 0C 4A 30 40 C0 5C B0 12 44 5C
-D2 48 0D 00 12 20 19 48 0E 00 82 49 08 20 1A 48
-16 00 0A 93 02 20 1A 48 24 00 82 4A 0A 20 09 5A
-82 49 0C 20 09 5A A2 93 02 20 04 24 82 49 0E 20
-39 50 20 00 19 82 12 20 19 82 12 20 82 49 10 20
-92 42 02 20 2C 20 C2 3E 1E 50 09 41 53 53 45 4D
-42 4C 45 52 84 12 E6 4F 70 5A DE 5A 24 5A 48 5B
-EA 59 70 5B EE 56 00 00 E0 59 94 5A 42 5A 82 5A
-FE 57 00 00 00 00 80 5B 1A 50 38 51 85 48 49 32
-4C 4F 0D 12 87 12 74 43 48 4E 9C 48 0A 4B 24 50
-24 54 22 40 A2 51 04 43 4F 44 45 00 B0 12 14 4C
-A2 82 CC 1D 0D 12 87 12 06 4C AC 41 5E 54 00 00
-07 45 4E 44 43 4F 44 45 0D 12 87 12 3E 50 BE 4B
-22 40 1A 54 03 41 53 4D 92 42 E0 1D C0 1D B2 40
-28 54 E0 1D E3 3F 80 54 06 45 4E 44 41 53 4D 00
-92 42 C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E
-1A 42 CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00
-A2 52 CC 1D B2 43 BE 1D 30 40 3E 50 00 00 05 4C
-4F 32 48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40
-C6 1D 39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24
-7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D
-87 12 78 46 D6 46 BA 41 22 55 90 47 B0 41 F8 4A
-44 55 24 55 29 4E 39 90 86 12 02 20 2E 53 30 41
-39 90 85 12 03 20 1E 4E 02 00 30 41 39 90 84 12
-01 20 2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12
-78 46 90 47 B0 41 74 55 6A 55 21 53 3E 90 10 00
-BE 2D 30 41 76 55 B2 41 CA 1D 22 D3 30 41 0D 12
-87 12 20 42 EE 54 88 55 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00
-34 20 92 53 CA 1D B0 12 10 55 0E 93 04 20 B2 40
-00 03 C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D
-21 3C 2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92
-04 20 B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40
-30 02 C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D
-09 3C B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 40 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 42 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 42 03 4B 45 59 30 40 B0 43
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 90 44 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 A2 44 30 4D 0D 12
+3D 40 EE 43 1B 42 32 20 9B 42 1E 20 16 00 1A 4F
+02 00 8F 4E 00 00 0E 43 19 42 1E 20 02 3C F0 43
+2D 83 19 92 20 20 15 2C 58 49 00 1E 19 53 78 90
+20 00 08 2C 78 90 0A 00 F4 23 82 49 1E 20 2F 53
+3D 41 30 4D 2E 9F 67 24 CA 48 00 00 1A 53 1E 53
+62 3C 0A 12 B0 12 48 5D 3A 41 DE 3F 92 43 03 43
+49 42 85 12 3C 1D 3F 80 06 00 8F 4E 04 00 3E 40
+54 00 9F 42 34 44 00 00 AF 4F 02 00 05 3C 82 43
+06 41 43 43 45 50 54 00 30 40 5C 44 3C 40 FE 44
+3B 40 C8 44 2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00
+3C 40 20 00 3D 40 F2 44 92 B3 DC 05 05 24 18 42
+CC 05 38 90 0A 00 04 20 21 53 39 40 B6 44 4D 15
+A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 23 02
+30 41 B2 40 13 00 CE 05 E2 D2 23 02 30 41 00 00
+05 53 4C 45 45 50 30 40 BA 44 12 D2 0A 18 FB 3F
+21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E9 27
+78 92 11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24
+CE 48 00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05
+30 4D F4 44 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40
+18 00 0A 18 82 93 DE 1D 02 24 92 53 DE 1D 3E 8F
+3D 41 30 4D 3C 43 04 45 4D 49 54 00 30 40 20 45
+08 4E 3E 4F E0 3F 16 45 04 45 43 48 4F 00 B2 40
+82 48 EC 44 82 43 DE 1D 30 4D 5C 43 06 4E 4F 45
+43 48 4F 00 B2 40 30 4D EC 44 92 43 DE 1D 30 4D
+0E 43 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
+20 00 DC 3F 52 45 06 53 50 41 43 45 53 00 0E 93
+09 24 0D 12 3D 40 7A 45 EF 3F 7C 45 2D 83 1E 83
+EB 23 3D 41 3E 4F 30 4D 22 43 04 54 59 50 45 00
+0E 93 0F 24 1E 15 3D 40 A6 45 28 4F 7E 48 8F 48
+00 00 2F 83 BB 3F A8 45 2D 83 91 83 02 00 F5 23
+1D 17 2F 53 3E 4F 30 4D 2E 44 02 43 52 00 30 40
+C2 45 0D 12 87 12 D0 45 02 0D 0A 00 90 45 22 40
+2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3
+0D 63 30 4D BA 45 07 43 41 50 53 5F 4F 4E B2 43
+B4 1D 30 4D E6 45 08 43 41 50 53 5F 4F 46 46 00
+82 43 B4 1D 30 4D 66 45 82 53 22 00 0D 12 87 12
+2C 40 D0 45 78 48 00 46 2C 40 22 00 54 46 EE 45
+22 46 3D 41 6E 4E 1E 83 82 5E C6 1D 3E 4F 92 B3
+C6 1D A2 63 C6 1D 30 4D 3C 45 82 2E 22 00 0D 12
+87 12 0C 46 2C 40 90 45 78 48 22 40 00 00 04 57
+4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C 09 5A 3A 5C
+28 4C 09 9A 1C 24 7E 9A FC 27 1A 83 3B 40 60 00
+C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53
+4B 9C F6 2F 82 93 B4 1D F3 27 7C 90 7B 00 F0 2F
+7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A C4 1D 1E 42
+C6 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
+44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 CA 1D
+3E 4B 0E 93 1E 24 58 4C 01 00 78 F0 1E 00 0E 58
+2E 53 1E 4E FE FF 0E 93 F3 27 09 4E 78 49 48 C4
+48 95 F7 23 0A 4C 1A 53 FA 99 00 00 F2 23 58 83
+FA 23 19 B3 09 63 0C 49 6A 4E 1E 43 4A 93 01 30
+2E 83 8F 4C 00 00 35 40 00 40 34 40 0C 40 30 4D
+8C 41 07 3E 4E 55 4D 42 45 52 3C 4F 38 4F 29 4F
+2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00 7A 90 0A 00
+05 28 7A 80 07 00 7A 90 0A 00 13 28 0A 9B 11 2C
+82 49 D0 04 82 48 D2 04 82 4B C8 04 19 42 E4 04
+18 42 E6 04 09 5A 08 63 1C 53 1E 83 E4 23 8F 48
+02 00 8F 4C 00 00 8F 49 04 00 30 4D 0C 43 1B 42
+DC 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 BC 47
+3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00
+10 2C 5A 83 2B 43 7A 52 07 24 3B 52 6A 53 04 24
+3B 40 10 00 5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80
+2C 00 5A 93 B8 23 B1 43 02 00 CE 3F BE 47 0E 93
+32 24 32 B0 00 02 2F 20 32 D0 00 02 FC 90 2E 00
+00 00 02 20 2D 83 C0 3F FC 90 2C 00 00 00 23 20
+0A 4E 09 43 8F 49 02 00 5A 83 09 4A 09 5C 69 49
+39 80 30 00 79 90 0A 00 05 28 79 80 07 00 79 90
+0A 00 0A 28 09 9B 08 2C 8F 49 00 00 0E 4B 2C 15
+B0 12 58 42 2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F
+04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B DC 1D 04 24
+3F 50 06 00 0E F3 30 4D 2F 53 9F 4F 02 00 04 00
+BF 4F 00 00 3E E3 09 20 3E E3 BF E3 02 00 BF E3
+00 00 9F 53 02 00 8F 63 00 00 32 B0 00 02 01 20
+2F 53 30 4D 28 45 07 45 58 45 43 55 54 45 0A 4E
+3E 4F 00 4A 1E 41 01 2C 1A 42 C6 1D A2 53 C6 1D
+8A 4E 00 00 3E 4F 30 4D 76 48 87 4C 49 54 45 52
+41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D A2 52 C6 1D
+BA 40 2C 40 00 00 8A 4E 02 00 3E 4F 32 B0 00 02
+32 C0 00 02 F1 23 30 4D F6 45 05 43 4F 55 4E 54
+2F 83 1E 53 8F 4E 00 00 5E 4E FF FF 30 4D 82 43
+C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F 30 4D 0D 12
+87 12 CE 48 20 42 54 46 EA 48 3D 40 F2 48 E1 22
+48 3E F4 48 0A 4E 3E 4F 3D 40 0A 49 37 27 3D 40
+E4 48 1A E2 BE 1D B8 27 B2 23 0C 49 3E 4F 3D 40
+E4 48 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
+00 00 3D 40 AE 4B CC 3F 66 48 08 45 56 41 4C 55
+41 54 45 00 39 40 C0 1D 3C 49 3B 49 3A 49 3D 15
+87 12 DE 48 46 49 B2 41 C4 1D B2 41 C2 1D B2 41
+C0 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
+E0 1C B2 40 00 1C 00 1C 82 43 BE 1D 82 43 08 18
+87 12 D0 45 05 0D 0A 6F 6B 20 90 45 36 44 58 45
+DE 48 D6 40 68 41 D0 45 0D 73 74 61 63 6B 20 65
+6D 70 74 79 21 20 14 4A 2C 40 30 FF 74 43 A4 41
+D0 45 0B 46 52 41 4D 20 66 75 6C 6C 21 20 14 4A
+38 42 EA 40 B0 41 72 49 D0 45 05 0D 0A 20 20 20
+AC 41 7A 49 50 44 05 41 42 4F 52 54 3F 40 80 1C
+C6 3F B2 40 3A 51 38 51 B2 40 BA 44 B8 44 B2 40
+20 45 1E 45 B2 40 C2 45 C0 45 B2 40 B0 43 AE 43
+B2 40 3C 1D 34 44 B2 40 5C 44 5A 44 38 40 0A 00
+82 48 DC 1D 88 43 E8 1D 28 83 FC 2F B2 40 0A 00
+DC 1D 30 41 8F 93 02 00 03 20 2F 52 3E 4F 30 4D
+B2 40 82 48 EC 44 1B 42 32 20 0B 93 04 24 CB 43
+02 00 2B 4B FA 3F B0 12 DE 49 A2 B3 DC 05 FD 27
+B2 40 11 00 CE 05 E2 C2 23 02 92 C3 DC 05 38 40
+A0 AA 39 42 03 43 19 83 FD 23 18 83 FA 23 92 B3
+DC 05 F3 23 0D 12 87 12 D0 45 04 1B 5B 37 6D 00
+90 45 2C 40 DE 1D EA 40 4C 40 B0 41 8E 4A D0 45
+05 6C 69 6E 65 3A 90 45 38 41 26 43 2E 45 90 45
+D0 45 04 1B 5B 30 6D 00 90 45 B2 50 EE 45 CC 49
+C6 49 86 41 42 4F 52 54 22 00 0D 12 87 12 0C 46
+2C 40 14 4A 78 48 22 40 AC 46 01 27 0D 12 87 12
+20 42 54 46 B2 46 B0 41 CC 4A 22 40 14 49 3E 42
+81 5C 92 42 C0 1D C4 1D 30 4D 00 00 81 5B 82 43
+BE 1D 30 4D D0 4A 01 5D B2 43 BE 1D 30 4D DC 4A
+83 5B 27 5D 0D 12 87 12 BC 4A 2C 40 2C 40 78 48
+78 48 22 40 BE 4F 02 00 3E 4F 30 4D 6E 43 82 49
+53 00 0D 12 87 12 38 42 EA 40 B0 41 28 4B F4 4A
+2C 40 04 4B 78 48 22 40 BC 4A 04 4B 22 40 0E 4B
+09 49 4D 4D 45 44 49 41 54 45 1A 42 B6 1D FA D0
+80 00 00 00 30 4D 08 46 87 52 45 43 55 52 53 45
+19 42 C6 1D 99 42 BA 1D 00 00 A2 53 C6 1D 30 4D
+58 49 88 50 4F 53 54 50 4F 4E 45 00 0D 12 87 12
+20 42 54 46 B2 46 4C 40 B0 41 CC 4A 68 41 B0 41
+8E 4B 2C 40 2C 40 78 48 78 48 2C 40 78 48 78 48
+22 40 82 9F BC 1D 40 25 0D 12 87 12 D0 45 0F 73
+74 61 63 6B 20 6D 69 73 6D 61 74 63 68 21 20 4A
+F0 4A 81 3B 82 93 BE 1D 8C 27 0D 12 87 12 2C 40
+22 40 78 48 92 4B DE 4A 22 40 B2 4B 07 3A 4E 4F
+4E 41 4D 45 2F 83 8F 4E 00 00 1E 42 C6 1D 0A 4E
+39 40 00 02 08 49 28 53 B0 12 3C 4C BA 40 0D 12
+FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F BC 1D
+30 4D CC 4B 01 3A 30 12 EC 4B 0D 12 87 12 2E 46
+20 42 54 46 16 4C 08 4E 7A 4E 5A D3 5A 53 0A 58
+19 42 DA 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F 3D 41
+BA 40 30 40 00 00 BA 40 00 4C 02 00 82 48 B6 1D
+82 49 B8 1D 82 4A BA 1D 2A 52 82 4A C6 1D 30 41
+4E 46 08 56 41 52 49 41 42 4C 45 00 B0 12 0A 4C
+BA 40 86 12 FC FF DC 3C BA 48 08 43 4F 4E 53 54
+41 4E 54 00 B0 12 0A 4C BA 40 85 12 FC FF 8A 4E
+FE FF 3E 4F CD 3C 6A 4C 06 43 52 45 41 54 45 00
+B0 12 0A 4C BA 40 85 12 FC FF 8A 4A FE FF C0 3C
+2A 49 05 44 4F 45 53 3E 1A 42 BA 1D BA 40 84 12
+00 00 8A 4D 02 00 3D 41 30 4D A2 4C 05 44 45 46
+45 52 B0 12 0A 4C AC 3C 12 47 05 3E 42 4F 44 59
+2E 52 30 4D 88 4C 07 43 4F 4D 50 41 52 45 0C 4E
+38 4F 3B 4F 39 4F 0E 4B 0E 5C 0C 24 1B 83 07 30
+1C 83 07 30 19 53 F9 98 FF FF F5 27 02 2C 3E 43
+30 4D 1E 43 30 4D 04 4C 86 5B 54 48 45 4E 5D 00
+30 4D 08 4D 86 5B 45 4C 53 45 5D 00 0D 12 87 12
+2C 40 01 00 20 42 54 46 C0 48 3C 40 B0 41 88 4D
+82 40 82 40 D0 45 04 5B 49 46 5D 00 DE 4C BA 41
+4A 4D B2 45 2E 41 AC 41 80 4D 82 40 82 40 D0 45
+06 5B 45 4C 53 45 5D 00 DE 4C BA 41 6E 4D B2 45
+38 41 3C 40 B0 41 80 4D 2E 41 AC 41 80 4D D0 45
+06 5B 54 48 45 4E 5D 00 DE 4C BA 41 80 4D 38 41
+4C 40 BA 41 24 4D 22 40 B2 45 D0 45 05 0D 0A 6B
+6F 20 90 45 36 44 CE 48 AC 41 24 4D 14 4D 84 5B
+49 46 5D 00 0E 93 3E 4F B9 27 30 4D 9E 4D 89 5B
+44 45 46 49 4E 45 44 5D 0D 12 87 12 20 42 54 46
+B2 46 64 40 22 40 AE 4D 8B 5B 55 4E 44 45 46 49
+4E 45 44 5D 0D 12 87 12 B8 4D 5C 41 22 40 E0 4D
+3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 8A 48
+06 4D 41 52 4B 45 52 00 B0 12 0A 4C BA 40 84 12
+FC FF BA 40 DE 4D FE FF 9A 42 C8 1D 00 00 28 83
+8A 48 02 00 A2 52 C6 1D 18 42 B6 1D 19 42 B8 1D
+A8 49 FE FF 89 48 00 00 30 4D 30 4B 82 49 46 00
+2F 83 8F 4E 00 00 1E 42 C6 1D A2 52 C6 1D BE 40
+B0 41 00 00 2E 53 30 4D BC 4C 84 45 4C 53 45 00
+A2 52 C6 1D 1A 42 C6 1D BA 40 AC 41 FC FF 8E 4A
+00 00 2A 83 0E 4A 30 4D 8A 45 84 54 48 45 4E 00
+9E 42 C6 1D 00 00 3E 4F 30 4D D6 4C 85 42 45 47
+49 4E 30 40 74 43 6A 4E 85 55 4E 54 49 4C 39 40
+B0 41 A2 52 C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E
+FE FF 3E 4F 30 4D A2 4A 85 41 47 41 49 4E 39 40
+AC 41 EF 3F 52 4C 85 57 48 49 4C 45 0D 12 87 12
+30 4E 70 40 22 40 48 4B 86 52 45 50 45 41 54 00
+0D 12 87 12 AE 4E 70 4E 22 40 4A 4E 82 44 4F 00
+2F 83 8F 4E 00 00 A2 53 C6 1D 1E 42 C6 1D BE 40
+C0 41 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
+30 4D F0 4D 84 4C 4F 4F 50 00 39 40 E2 41 A2 52
+C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E FE FF 1E 42
+00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
+F6 3F 3E 4F 30 4D A8 43 85 2B 4C 4F 4F 50 39 40
+D0 41 E5 3F 04 4F 85 4C 45 41 56 45 1A 42 C6 1D
+BA 40 F2 41 00 00 BA 40 AC 41 02 00 B2 50 06 00
+C6 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
+30 4D 46 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
+3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
+18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
+E8 49 00 00 1A 83 FA 23 30 4D B6 4E 0A 56 4F 43
+41 42 55 4C 41 52 59 00 0D 12 87 12 90 4C 2C 40
+10 00 2C 40 00 00 C0 41 2C 40 00 00 78 48 E2 41
+C8 4F 74 43 2C 40 C8 1D 3C 40 EA 40 78 48 F2 40
+A8 4C 2C 40 CA 1D F2 40 22 40 BA 4A 05 46 4F 52
+54 48 84 12 E2 4F A6 65 48 65 1C 67 6A 65 34 54
+38 4F E4 66 10 66 2E 66 1C 65 F2 66 38 66 00 00
+9A 65 E6 4A 24 66 00 00 A8 4E 04 41 4C 53 4F 00
+3A 40 0C 00 39 40 CA 1D 38 40 CC 1D B5 3F 62 4B
+08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
+CC 1D 38 40 CA 1D A2 3F 3A 46 04 4F 4E 4C 59 00
+82 43 CC 1D 30 4D DC 4E 0B 44 45 46 49 4E 49 54
+49 4F 4E 53 92 42 CA 1D DA 1D 30 4D F2 4F 50 50
+64 50 74 50 3A 4E 82 4A C8 1D 2E 4E 82 4E C6 1D
+3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
+FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
+3E 4F 3D 41 30 4D 30 50 09 50 57 52 5F 53 54 41
+54 45 84 12 6C 50 30 54 A4 67 C8 4E 09 52 53 54
+5F 53 54 41 54 45 92 42 0E 18 B6 50 92 42 0C 18
+B8 50 EF 3F A8 50 08 50 57 52 5F 48 45 52 45 00
+92 42 C8 1D B6 50 92 42 C6 1D B8 50 30 4D BC 50
+08 52 53 54 5F 48 45 52 45 00 92 42 C8 1D 0E 18
+92 42 C6 1D 0C 18 EC 3F AC 4F 04 57 49 50 45 00
+39 40 10 00 29 83 B9 43 80 FF FC 23 B0 12 D2 49
+B2 40 A4 67 0C 18 B2 40 30 54 0E 18 CC 3F 0A 51
+04 57 41 52 4D 00 30 40 3A 51 1E 42 08 18 0D 12
+87 12 D0 45 06 0D 1B 5B 37 6D 23 00 90 45 5E 43
+D0 45 1F 46 61 73 74 46 6F 72 74 68 20 56 32 30
+36 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E
+73 20 90 45 2C 40 30 FF 74 43 20 41 26 43 D0 45
+0B 62 79 74 65 73 20 66 72 65 65 20 36 4A 7C 4E
+04 43 4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A
+5C 01 B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0
+03 00 06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43
+22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3
+66 02 F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01
+F2 40 10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01
+B2 40 48 00 62 01 82 43 66 01 39 40 00 01 B2 40
+33 00 64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93
+08 18 01 24 59 07 38 40 59 14 18 83 FE 23 19 83
+FA 23 B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00
+A1 04 F2 C0 40 00 A2 04 39 40 4C 00 29 83 B9 40
+9C 51 B4 FF FB 23 B2 40 C0 44 F0 FF B2 40 18 00
+0A 18 39 40 00 10 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 40 36 40 B4 40 35 40
+00 40 34 40 0C 40 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 CC 52 38 90 0A 00 28 27
+38 90 16 00 25 2F 28 93 FE 22 F3 26 CE 52 E2 B2
+60 02 31 23 B2 40 81 A9 40 06 B2 40 30 00 46 06
+D2 D3 25 02 B2 D0 C0 04 0C 02 92 C3 40 06 39 42
+B0 12 DE 5B D2 C3 23 02 2C 42 B2 40 95 00 14 20
+B2 40 00 40 18 20 B0 12 54 5B 02 24 30 40 7A 5C
+B0 12 DC 5B 7A 93 FC 23 B2 40 87 AA 14 20 92 43
+16 20 B2 40 00 48 18 20 B0 12 54 5B 29 42 B0 12
+DE 5B 92 43 14 20 82 43 16 20 78 43 3C 42 B2 40
+00 77 18 20 B0 12 54 5B B2 40 40 69 18 20 B0 12
+9A 5B 03 24 58 83 F3 23 D9 3F 0C 5C A2 43 16 20
+B2 40 00 50 18 20 B0 12 9A 5B D0 23 92 D3 40 06
+82 43 46 06 92 C3 40 06 B0 12 04 5C 38 40 00 1E
+92 48 C6 01 04 20 92 48 C8 01 06 20 5A 48 C2 01
+92 43 02 20 7A 80 06 00 0D 24 7A 82 0B 24 A2 43
+02 20 6A 53 07 24 5A 53 05 24 3A 50 0B 20 0C 4A
+30 40 80 5C B0 12 04 5C D2 48 0D 00 12 20 19 48
+0E 00 82 49 08 20 1A 48 16 00 0A 93 02 20 1A 48
+24 00 82 4A 0A 20 09 5A 82 49 0C 20 09 5A A2 93
+02 20 04 24 82 49 0E 20 39 50 20 00 19 82 12 20
+19 82 12 20 82 49 10 20 92 42 02 20 2C 20 9B 3E
+1A 50 09 41 53 53 45 4D 42 4C 45 52 84 12 E2 4F
+30 5A 9E 5A E4 59 08 5B AA 59 30 5B C4 56 00 00
+A0 59 54 5A 02 5A 42 5A D4 57 00 00 00 00 40 5B
+16 50 2C 4E 85 48 49 32 4C 4F 0D 12 87 12 74 43
+44 4E 78 48 DE 4A 20 50 0C 54 22 40 90 51 04 43
+4F 44 45 00 B0 12 0A 4C A2 82 C6 1D 0D 12 87 12
+FC 4B AC 41 46 54 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 3A 50 92 4B 22 40 02 54 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 10 54 DA 1D E3 3F 68 54
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 3A 50 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 4E 54 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 D4 4B DE 4A EA 54 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 54 46 B2 46 BA 41
+2A 55 6C 47 B0 41 CC 4A 4C 55 2C 55 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 16 55 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 54 46 6C 47 B0 41 88 55 7E 55 21 53
+3E 90 10 00 84 2D E2 2B 8A 55 B2 41 C4 1D DE 3F
+0D 12 87 12 20 42 F4 54 9A 55 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 16 55 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
-08 20 B2 40 10 02 C4 1D 92 53 CA 1D B0 12 10 55
-EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D
-92 53 CA 1D B0 12 56 55 0E 20 B2 50 10 00 C4 1D
-3E 40 2B 00 B0 12 56 55 33 24 92 92 C6 1D CA 1D
-02 24 92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12
-56 55 F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12
-10 55 B0 12 46 55 E8 3F 0D 12 87 12 20 42 EE 54
-82 56 FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50
-82 00 C4 1D C1 3F B0 12 56 55 DE 23 B2 50 80 00
-C4 1D 3E 40 28 00 B0 12 10 55 B0 12 46 55 D4 23
-3D 40 F8 4A 30 4D BE 44 04 52 45 54 49 00 0D 12
-87 12 2C 40 00 13 9C 48 22 40 2C 40 2C 00 7E 55
-78 56 D4 56 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F
-DE 54 03 4D 4F 56 84 12 CA 56 00 40 E2 56 05 4D
-4F 56 2E 42 84 12 CA 56 40 40 00 00 03 41 44 44
-84 12 CA 56 00 50 FC 56 05 41 44 44 2E 42 84 12
-CA 56 40 50 08 57 04 41 44 44 43 00 84 12 CA 56
-00 60 16 57 06 41 44 44 43 2E 42 00 84 12 CA 56
-40 60 B8 56 04 53 55 42 43 00 84 12 CA 56 00 70
-34 57 06 53 55 42 43 2E 42 00 84 12 CA 56 40 70
-42 57 03 53 55 42 84 12 CA 56 00 80 52 57 05 53
-55 42 2E 42 84 12 CA 56 40 80 BA 54 03 43 4D 50
-84 12 CA 56 00 90 6C 57 05 43 4D 50 2E 42 84 12
-CA 56 40 90 A8 54 04 44 41 44 44 00 84 12 CA 56
-00 A0 86 57 06 44 41 44 44 2E 42 00 84 12 CA 56
-40 A0 78 57 03 42 49 54 84 12 CA 56 00 B0 A4 57
-05 42 49 54 2E 42 84 12 CA 56 40 B0 B0 57 03 42
-49 43 84 12 CA 56 00 C0 BE 57 05 42 49 43 2E 42
-84 12 CA 56 40 C0 CA 57 03 42 49 53 84 12 CA 56
-00 D0 D8 57 05 42 49 53 2E 42 84 12 CA 56 40 D0
-00 00 03 58 4F 52 84 12 CA 56 00 E0 F2 57 05 58
-4F 52 2E 42 84 12 CA 56 40 E0 24 57 03 41 4E 44
-84 12 CA 56 00 F0 0C 58 05 41 4E 44 2E 42 84 12
-CA 56 40 F0 20 42 7E 55 2A 58 1A 42 C4 1D B2 F0
-70 00 C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F
-5E 57 03 52 52 43 84 12 24 58 00 10 42 58 05 52
-52 43 2E 42 84 12 24 58 40 10 4E 58 04 53 57 50
-42 00 84 12 24 58 80 10 5C 58 03 52 52 41 84 12
-24 58 00 11 6A 58 05 52 52 41 2E 42 84 12 24 58
-40 11 76 58 03 53 58 54 84 12 24 58 80 11 00 00
-04 50 55 53 48 00 84 12 24 58 00 12 90 58 06 50
-55 53 48 2E 42 00 84 12 24 58 40 12 E4 57 04 43
-41 4C 4C 00 84 12 24 58 80 12 2C 40 2C 00 7E 55
-78 56 C4 58 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D
-BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49
-3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12
-87 12 5E 43 F4 45 0D 6F 75 74 20 6F 66 20 62 6F
-75 6E 64 73 4C 4A 9E 58 05 50 55 53 48 4D 84 12
-BA 58 00 15 08 59 04 50 4F 50 4D 00 84 12 BA 58
-00 17 20 42 EE 54 28 59 82 43 C4 1D 92 42 CC 1D
-C2 1D A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12
-78 46 90 47 B0 41 F8 4A 78 56 4C 59 0A 4E 3E 4F
-1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F 84 58 04 52
-52 43 4D 00 84 12 22 59 50 00 5E 59 04 52 52 41
-4D 00 84 12 22 59 50 01 6C 59 04 52 4C 41 4D 00
-84 12 22 59 50 02 7A 59 04 52 52 55 4D 00 84 12
-22 59 50 03 85 12 00 3C 88 59 03 53 3E 3D 85 12
-00 38 9A 59 02 53 3C 00 85 12 00 34 16 59 03 30
-3E 3D 85 12 00 30 AE 59 02 30 3C 00 85 12 00 30
-00 00 02 55 3C 00 85 12 00 2C C2 59 03 55 3E 3D
-85 12 00 28 B8 59 03 30 3C 3E 85 12 00 24 D6 59
-02 30 3D 00 85 12 00 20 CA 44 02 49 46 00 1A 42
-CC 1D 8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D CC 59
-04 54 48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48
-29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00
-30 4D 94 57 04 45 4C 53 45 00 1A 42 CC 1D BA 40
-00 3C 00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F
-00 5A 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
-CC 1D 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0
-FF 03 08 DA 89 48 00 00 A2 53 CC 1D 30 4D 18 58
-05 41 47 41 49 4E 0D 12 87 12 94 59 48 5A 22 40
-00 00 05 57 48 49 4C 45 0D 12 87 12 EE 59 70 40
-22 40 A4 59 06 52 45 50 45 41 54 00 0D 12 87 12
-94 59 48 5A 06 5A 22 40 AA 5A 3D 41 08 4E 3E 4F
-2A 48 0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43
-00 00 C3 3F AE 58 03 42 57 31 84 12 A8 5A 00 00
-C6 5A 03 42 57 32 84 12 A8 5A 00 00 D2 5A 03 42
-57 33 84 12 A8 5A 00 00 EA 5A 3D 41 1A 42 CC 1D
-28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A
-00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46
-57 31 84 12 E8 5A 00 00 0E 5B 03 46 57 32 84 12
-E8 5A 00 00 1A 5B 03 46 57 33 84 12 E8 5A 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 16 55 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 68 55 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+68 55 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 68 55 FA 23 3C 50 10 00 B0 12
+50 55 EF 3F 0D 12 87 12 20 42 F4 54 6E 56 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 68 55 E5 23 3C 50 80 00 B0 12 50 55 E0 3F
+B0 44 04 52 45 54 49 00 0D 12 87 12 2C 40 00 13
+78 48 22 40 2C 40 2C 00 90 55 64 56 AE 56 2E 4E
+0E DC 09 4B A5 3F C6 54 03 4D 4F 56 84 12 A4 56
+00 40 B8 56 05 4D 4F 56 2E 42 84 12 A4 56 40 40
+00 00 03 41 44 44 84 12 A4 56 00 50 D2 56 05 41
+44 44 2E 42 84 12 A4 56 40 50 DE 56 04 41 44 44
+43 00 84 12 A4 56 00 60 EC 56 06 41 44 44 43 2E
+42 00 84 12 A4 56 40 60 92 56 04 53 55 42 43 00
+84 12 A4 56 00 70 0A 57 06 53 55 42 43 2E 42 00
+84 12 A4 56 40 70 18 57 03 53 55 42 84 12 A4 56
+00 80 28 57 05 53 55 42 2E 42 84 12 A4 56 40 80
+A2 54 03 43 4D 50 84 12 A4 56 00 90 42 57 05 43
+4D 50 2E 42 84 12 A4 56 40 90 90 54 04 44 41 44
+44 00 84 12 A4 56 00 A0 5C 57 06 44 41 44 44 2E
+42 00 84 12 A4 56 40 A0 4E 57 03 42 49 54 84 12
+A4 56 00 B0 7A 57 05 42 49 54 2E 42 84 12 A4 56
+40 B0 86 57 03 42 49 43 84 12 A4 56 00 C0 94 57
+05 42 49 43 2E 42 84 12 A4 56 40 C0 A0 57 03 42
+49 53 84 12 A4 56 00 D0 AE 57 05 42 49 53 2E 42
+84 12 A4 56 40 D0 00 00 03 58 4F 52 84 12 A4 56
+00 E0 C8 57 05 58 4F 52 2E 42 84 12 A4 56 40 E0
+FA 56 03 41 4E 44 84 12 A4 56 00 F0 E2 57 05 41
+4E 44 2E 42 84 12 A4 56 40 F0 20 42 90 55 00 58
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+34 57 03 52 52 43 84 12 FA 57 00 10 12 58 05 52
+52 43 2E 42 84 12 FA 57 40 10 1E 58 04 53 57 50
+42 00 84 12 FA 57 80 10 2C 58 03 52 52 41 84 12
+FA 57 00 11 3A 58 05 52 52 41 2E 42 84 12 FA 57
+40 11 46 58 03 53 58 54 84 12 FA 57 80 11 00 00
+04 50 55 53 48 00 84 12 FA 57 00 12 60 58 06 50
+55 53 48 2E 42 00 84 12 FA 57 40 12 BA 57 04 43
+41 4C 4C 00 84 12 FA 57 80 12 1A 53 0E 4A 0D 12
+87 12 5E 43 D0 45 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 20 4A 20 42 F4 54 AC 58 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 54 46 6C 47 B0 41 CC 4A CC 58 1B 17 87 12
+64 56 D4 58 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+54 58 04 52 52 43 4D 00 84 12 A6 58 50 00 02 59
+04 52 52 41 4D 00 84 12 A6 58 50 01 10 59 04 52
+4C 41 4D 00 84 12 A6 58 50 02 1E 59 04 52 52 55
+4D 00 84 12 A6 58 50 03 6E 58 05 50 55 53 48 4D
+84 12 A6 58 00 15 3A 59 04 50 4F 50 4D 00 84 12
+A6 58 00 17 85 12 00 3C 2C 59 03 53 3E 3D 85 12
+00 38 5A 59 02 53 3C 00 85 12 00 34 48 59 03 30
+3E 3D 85 12 00 30 6E 59 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C 82 59 03 55 3E 3D
+85 12 00 28 78 59 03 30 3C 3E 85 12 00 24 96 59
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D 8C 59
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 6A 57 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+C0 59 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D EE 57
+05 41 47 41 49 4E 0D 12 87 12 54 59 08 5A 22 40
+00 00 05 57 48 49 4C 45 0D 12 87 12 AE 59 70 40
+22 40 64 59 06 52 45 50 45 41 54 00 0D 12 87 12
+54 59 08 5A C6 59 22 40 6A 5A 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D 7E 58 03 42 57 31 84 12 68 5A E2 1D
+86 5A 03 42 57 32 84 12 68 5A E4 1D 92 5A 03 42
+57 33 84 12 68 5A E6 1D AA 5A 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 A8 5A E8 1D CE 5A 03 46 57 32 84 12
+A8 5A EA 1D DA 5A 03 46 57 33 84 12 A8 5A EC 1D
 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
-3E E0 00 08 30 4D 26 5B 04 47 4F 54 4F 00 0D 12
-87 12 94 59 E8 4A 92 48 22 40 00 00 05 3F 47 4F
-54 4F 0D 12 87 12 30 5B E8 4A 92 48 22 40 00 00
-03 4A 4D 50 0D 12 87 12 E8 4A 76 5A 22 40 5C 5B
-04 3F 4A 4D 50 00 0D 12 87 12 30 5B E8 4A 70 40
-48 5A 22 40 1A 43 25 3C D2 C3 23 02 E2 B2 60 02
-02 24 30 40 A8 51 1A 52 04 20 19 62 06 20 92 43
+3E E0 00 08 30 4D E6 5A 04 47 4F 54 4F 00 0D 12
+87 12 54 59 BC 4A 6E 48 22 40 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 F0 5A BC 4A 6E 48 22 40 00 00
+03 4A 4D 50 0D 12 87 12 BC 4A 36 5A 22 40 1C 5B
+04 3F 4A 4D 50 00 0D 12 87 12 F0 5A BC 4A 70 40
+08 5A 22 40 1A 43 25 3C D2 C3 23 02 E2 B2 60 02
+02 24 30 40 96 51 1A 52 04 20 19 62 06 20 92 43
 14 20 A2 93 02 20 07 24 0A 5A 49 69 82 4A 16 20
 C2 49 18 20 0A 3C C2 4A 15 20 8A 10 C2 4A 16 20
-C2 49 17 20 89 10 C2 49 18 20 B0 12 1C 5C 5A 53
+C2 49 17 20 89 10 C2 49 18 20 B0 12 DC 5B 5A 53
 FC 23 39 40 05 00 D2 49 14 20 4E 06 82 93 46 06
 05 24 92 B3 6C 06 FD 27 C2 93 4C 06 59 83 F3 2F
 19 83 0B 30 F2 43 4E 06 82 93 46 06 03 24 92 B3
@@ -455,16 +453,16 @@ FC 23 39 40 05 00 D2 49 14 20 4E 06 82 93 46 06
 8A 10 C2 4A 4E 06 82 93 46 06 05 24 92 B3 6C 06
 FD 27 C2 93 4C 06 19 83 F3 23 5A 42 4C 06 30 41
 1A 52 08 20 09 43 1C D3 F2 40 51 00 19 20 B0 12
-98 5B 33 20 B0 12 1C 5C 6A 53 04 24 FB 23 D9 42
+58 5B 33 20 B0 12 DC 5B 6A 53 04 24 FB 23 D9 42
 4C 06 FF 1D F2 43 4E 06 03 43 19 53 39 90 01 02
 F6 23 F2 43 4E 06 3C C0 03 00 D2 D3 23 02 30 41
-09 43 2C D3 F0 40 58 00 91 C3 B0 12 98 5B 15 20
-3A 40 FE FF 29 43 B0 12 20 5C D2 49 00 1E 4E 06
+09 43 2C D3 F0 40 58 00 D1 C3 B0 12 58 5B 15 20
+3A 40 FE FF 29 43 B0 12 E0 5B D2 49 00 1E 4E 06
 03 43 19 53 39 90 00 02 F8 23 39 40 03 00 B0 12
-1E 5C 7A C0 E1 00 6A 92 DE 27 8C 10 1C 52 4C 06
-D2 D3 23 02 0D 12 87 12 F4 45 0B 3C 20 53 44 20
-45 72 72 6F 72 21 D8 5C 2F 83 B2 40 10 00 E2 1D
-0E 4C 87 12 26 43 4C 4A 92 4B 0E 00 22 20 92 4B
+DE 5B 7A C0 E1 00 6A 92 DE 27 8C 10 1C 52 4C 06
+D2 D3 23 02 0D 12 87 12 D0 45 0B 3C 20 53 44 20
+45 72 72 6F 72 21 98 5C 2F 83 B2 40 10 00 DC 1D
+0E 4C 87 12 26 43 20 4A 92 4B 0E 00 22 20 92 4B
 10 00 24 20 5A 42 23 20 58 42 22 20 92 93 02 20
 08 24 59 42 24 20 89 10 0A 59 88 10 08 58 0A 6A
 88 10 08 58 30 41 82 43 1C 20 92 42 0E 20 1A 20
@@ -472,175 +470,175 @@ C2 93 24 20 03 20 92 93 22 20 14 24 92 42 22 20
 D0 04 92 42 24 20 D2 04 92 42 12 20 C8 04 92 42
 E4 04 1A 20 92 42 E6 04 1C 20 92 52 10 20 1A 20
 82 63 1C 20 30 41 92 4B 0E 00 22 20 92 4B 10 00
-24 20 B0 12 16 5D 5A 4B 03 00 82 5A 1A 20 82 63
+24 20 B0 12 D6 5C 5A 4B 03 00 82 5A 1A 20 82 63
 1C 20 30 41 09 93 07 24 F8 90 20 00 00 1E 03 20
 18 53 19 83 F9 23 30 41 1B 42 32 20 82 43 1E 20
 B2 90 00 02 20 20 A3 20 BB 80 00 02 12 00 8B 73
 14 00 DB 53 03 00 DB 92 12 20 03 00 11 28 CB 43
-03 00 B0 12 E8 5C B0 12 40 5C 8B 43 10 00 9B 48
+03 00 B0 12 A8 5C B0 12 00 5C 8B 43 10 00 9B 48
 00 1E 0E 00 92 93 02 20 03 24 9B 48 02 1E 10 00
 B2 40 00 02 20 20 8B 93 14 00 0B 20 92 9B 12 00
 1E 20 7D 2C BB 90 00 02 12 00 03 2C 92 4B 12 00
-20 20 B0 12 56 5D 1A 42 1A 20 19 42 1C 20 23 3F
+20 20 B0 12 16 5D 1A 42 1A 20 19 42 1C 20 23 3F
 3C 42 3B 40 40 20 09 43 CB 93 02 00 10 24 9B 92
 24 20 0C 00 04 20 9B 92 22 20 0A 00 07 24 09 4B
 3B 50 18 00 3B 90 00 21 EF 23 0C 5C 30 41 0C 43
-82 4B 32 20 8B 49 00 00 49 93 0A 24 99 52 CA 1D
+82 4B 32 20 8B 49 00 00 49 93 0A 24 99 52 C4 1D
 16 00 4A 93 05 34 C9 93 02 00 02 34 5A 59 02 00
 CB 4A 02 00 CB 43 03 00 9B 42 1A 20 04 00 9B 42
 1C 20 06 00 18 42 30 20 8B 48 08 00 9B 48 1A 1E
 0A 00 9B 48 14 1E 0C 00 9B 48 1A 1E 0E 00 9B 48
 14 1E 10 00 9B 48 1C 1E 12 00 9B 48 1E 1E 14 00
 82 43 1E 20 6A 93 5F 27 C9 37 8B 43 16 00 7A 93
-02 24 0A 38 95 3F B2 40 3C 21 3C 44 B2 40 D6 43
-62 44 B2 40 02 21 00 21 18 42 00 21 B2 50 06 00
-00 21 19 42 CA 1D 1A 42 C6 1D 0A 89 88 4A 00 00
-19 52 C8 1D 88 49 02 00 88 4D 04 00 79 3F 1B 42
-32 20 0B 93 A3 27 EB 93 02 00 04 20 B0 12 68 63
-B0 12 30 63 5A 4B 02 00 CB 43 02 00 09 4B 2B 4B
-82 4B 32 20 7A 93 07 20 B2 40 3C 1D 3C 44 B2 40
-70 44 62 44 0A 3C 0B 93 89 27 CB 93 02 00 86 37
-92 4B 16 00 1E 20 B0 12 D0 5D 21 52 2F 53 B2 80
+02 24 0A 38 95 3F B2 40 3C 21 34 44 B2 40 CE 43
+5A 44 B2 40 02 21 00 21 18 42 00 21 B2 50 06 00
+00 21 19 42 C4 1D 1A 42 C0 1D 0A 89 88 4A 00 00
+19 52 C2 1D 88 49 02 00 88 4D 04 00 79 3F 1B 42
+32 20 0B 93 A3 27 EB 93 02 00 04 20 B0 12 28 63
+B0 12 F0 62 5A 4B 02 00 CB 43 02 00 09 4B 2B 4B
+82 4B 32 20 7A 93 07 20 B2 40 3C 1D 34 44 B2 40
+5C 44 5A 44 0A 3C 0B 93 89 27 CB 93 02 00 86 37
+92 4B 16 00 1E 20 B0 12 90 5D 21 52 2F 53 B2 80
 06 00 00 21 1A 42 00 21 3E 4A BF 4A 00 00 3D 4A
-30 4D F4 50 85 52 45 41 44 22 5A 43 19 3C 96 51
-86 57 52 49 54 45 22 00 6A 43 12 3C 5C 50 84 44
-45 4C 22 00 6A 42 0C 3C 66 54 05 43 4C 4F 53 45
-B0 12 DE 5E 30 4D 78 4F 85 4C 4F 41 44 22 7A 43
+30 4D F0 50 85 52 45 41 44 22 5A 43 19 3C 30 51
+86 57 52 49 54 45 22 00 6A 43 12 3C 58 50 84 44
+45 4C 22 00 6A 42 0C 3C D8 54 05 43 4C 4F 53 45
+B0 12 9E 5E 30 4D 74 4F 85 4C 4F 41 44 22 7A 43
 2F 83 8F 4E 00 00 0E 4A 82 93 BE 1D 0C 24 0D 12
-87 12 2C 40 2C 40 9C 48 9C 48 12 46 30 46 2C 40
-B6 5F 9C 48 22 40 0D 12 87 12 2C 40 22 00 78 46
-E4 48 B4 5F 3D 41 35 4F 0E 55 82 4E 36 20 1C 43
+87 12 2C 40 2C 40 78 48 78 48 EE 45 0C 46 2C 40
+76 5F 78 48 22 40 0D 12 87 12 2C 40 22 00 54 46
+C0 48 74 5F 3D 41 35 4F 0E 55 82 4E 36 20 1C 43
 92 42 2C 20 22 20 92 42 2E 20 24 20 0E 95 8D 24
 F5 90 3A 00 01 00 01 20 25 53 F5 90 5C 00 00 00
 08 20 15 53 92 42 02 20 22 20 82 43 24 20 0E 95
-70 24 82 45 34 20 B0 12 16 5D 34 40 20 00 A2 93
+70 24 82 45 34 20 B0 12 D6 5C 34 40 20 00 A2 93
 02 20 04 24 92 92 22 20 02 20 02 24 14 42 12 20
-B0 12 F6 5D 2C 43 0A 43 08 4A 58 0E 08 58 82 48
+B0 12 B6 5D 2C 43 0A 43 08 4A 58 0E 08 58 82 48
 30 20 C8 93 00 1E 61 24 39 42 F8 95 00 1E 04 20
 18 53 19 83 FA 23 15 53 F5 90 2E 00 FF FF 19 24
-39 50 03 00 B0 12 74 5D 06 20 F5 90 5C 00 FF FF
+39 50 03 00 B0 12 34 5D 06 20 F5 90 5C 00 FF FF
 29 24 0E 95 27 28 15 42 34 20 1A 53 3A 90 10 00
 DB 23 92 53 1A 20 82 63 1C 20 14 83 D1 23 2C 42
-3C 3C F5 90 2E 00 FE FF EE 27 B0 12 74 5D EB 23
+3C 3C F5 90 2E 00 FE FF EE 27 B0 12 34 5D EB 23
 39 40 03 00 F8 95 00 1E 04 20 18 53 19 83 FA 23
 09 3C 0E 95 E0 2F F5 90 5C 00 FF FF DC 23 B0 12
-74 5D D9 23 18 42 30 20 92 48 1A 1E 22 20 92 48
+34 5D D9 23 18 42 30 20 92 48 1A 1E 22 20 92 48
 14 1E 24 20 F8 B0 10 00 0B 1E 14 24 82 93 24 20
 06 20 82 93 22 20 03 20 92 42 02 20 22 20 0E 95
 8E 2F 92 42 22 20 2C 20 92 42 24 20 2E 20 8F 43
-00 00 03 3C 2A 4F B0 12 00 5E 34 40 0C 40 35 40
+00 00 03 3C 2A 4F B0 12 C0 5D 34 40 0C 40 35 40
 00 40 3A 4F 3E 4F 0A 93 05 24 7A 93 14 20 0C 93
-02 20 3D 41 30 4D 0D 12 87 12 F4 45 0B 3C 20 4F
-70 65 6E 45 72 72 6F 72 4A 45 74 43 E4 48 AC 45
-74 45 AC 41 D6 5C 1A 93 B6 20 0C 93 EC 23 30 4D
-44 5F 04 52 45 41 44 00 2F 83 8F 4E 00 00 1E 42
-32 20 B0 12 88 5D 1E 82 32 20 30 4D 2C 43 12 12
+02 20 3D 41 30 4D 0D 12 87 12 D0 45 0B 3C 20 4F
+70 65 6E 45 72 72 6F 72 2E 45 74 43 C0 48 90 45
+58 45 AC 41 96 5C 1A 93 B6 20 0C 93 EC 23 30 4D
+04 5F 04 52 45 41 44 00 2F 83 8F 4E 00 00 1E 42
+32 20 B0 12 48 5D 1E 82 32 20 30 4D 2C 43 12 12
 2A 20 18 42 02 20 08 58 2A 41 82 9A 0A 20 A1 24
-B0 12 40 5C 09 43 28 93 03 24 89 93 02 1E 03 20
+B0 12 00 5C 09 43 28 93 03 24 89 93 02 1E 03 20
 89 93 00 1E 07 24 09 58 39 90 00 02 F4 23 91 53
 00 00 EA 3F 0C 43 6A 41 B9 43 00 1E 28 93 0F 24
 B9 40 FF 0F 02 1E 09 11 8A 10 09 5A 5A 41 01 00
 0A 11 09 10 82 4A 28 20 82 49 26 20 07 3C 09 11
 C2 49 26 20 C2 4A 27 20 82 43 28 20 3A 41 82 4A
-2A 20 30 41 0A 12 1A 52 08 20 B0 12 80 5C 3A 41
-1A 52 0C 20 30 40 80 5C F2 B0 40 00 A2 04 29 20
+2A 20 30 41 0A 12 1A 52 08 20 B0 12 40 5C 3A 41
+1A 52 0C 20 30 40 40 5C F2 B0 40 00 A2 04 29 20
 F2 B0 10 00 A2 04 FC 27 5A 42 B0 04 4A 11 59 42
 B4 04 F2 40 20 00 C0 04 D2 42 B1 04 C8 04 1A 52
 E4 04 D2 42 B5 04 C8 04 19 52 E4 04 D2 42 B2 04
 C0 04 B2 40 00 08 C8 04 1A 52 E4 04 92 42 B6 04
 C0 04 B2 80 BC 07 C0 04 B2 40 00 02 C8 04 19 52
 E4 04 30 41 22 2A 2B 2C 2F 3A 3B 3C 3D 3E 3F 5B
-5C 5D 7C 2E 29 92 06 38 39 80 03 00 B0 12 84 62
+5C 5D 7C 2E 29 92 06 38 39 80 03 00 B0 12 44 62
 39 40 03 00 7A 4B C8 4A 00 1E 82 9B 36 20 12 28
-0D 12 3D 40 0F 00 3C 40 34 62 7A 9C F3 27 1D 83
+0D 12 3D 40 0F 00 3C 40 F4 61 7A 9C F3 27 1D 83
 FC 23 3D 41 6A 9C E6 27 3A 80 21 00 EB 3B 18 53
 19 83 E8 23 09 93 06 24 F8 40 20 00 00 1E 18 53
 19 83 FA 23 30 41 2A 93 EC 20 2C 93 0E 24 0C 93
-BB 24 0D 12 87 12 F4 45 0C 3C 20 57 72 69 74 65
-45 72 72 6F 72 00 AC 41 18 61 B0 12 4C 61 92 42
-26 20 22 20 92 42 28 20 24 20 B0 12 C4 61 B0 12
-F6 5D 18 42 30 20 F8 40 20 00 0B 1E B0 12 D8 61
+BB 24 0D 12 87 12 D0 45 0C 3C 20 57 72 69 74 65
+45 72 72 6F 72 00 AC 41 D8 60 B0 12 0C 61 92 42
+26 20 22 20 92 42 28 20 24 20 B0 12 84 61 B0 12
+B6 5D 18 42 30 20 F8 40 20 00 0B 1E B0 12 98 61
 88 43 0C 1E 88 4A 0E 1E 88 49 10 1E 88 49 12 1E
 98 42 24 20 14 1E 98 42 22 20 1A 1E 88 43 1C 1E
 88 43 1E 1E 1C 43 1B 42 34 20 82 9B 36 20 C9 27
-FB 90 2E 00 00 00 C5 27 39 40 0B 00 B0 12 54 62
-B0 12 72 63 2A 43 B0 12 00 5E 0C 93 BA 23 30 4D
-1A 4B 04 00 19 4B 06 00 B0 12 46 5C B0 12 D8 61
+FB 90 2E 00 00 00 C5 27 39 40 0B 00 B0 12 14 62
+B0 12 32 63 2A 43 B0 12 C0 5D 0C 93 BA 23 30 4D
+1A 4B 04 00 19 4B 06 00 B0 12 06 5C B0 12 98 61
 18 4B 08 00 88 49 12 1E 88 4A 16 1E 88 49 18 1E
 98 4B 12 00 1C 1E 98 4B 14 00 1E 1E 1A 4B 04 00
-19 4B 06 00 30 40 82 5C 9B 52 1E 20 12 00 8B 63
-14 00 1A 42 1A 20 19 42 1C 20 30 40 82 5C B2 40
-00 02 1E 20 1B 42 32 20 B0 12 68 63 82 43 1E 20
+19 4B 06 00 30 40 42 5C 9B 52 1E 20 12 00 8B 63
+14 00 1A 42 1A 20 19 42 1C 20 30 40 42 5C B2 40
+00 02 1E 20 1B 42 32 20 B0 12 28 63 82 43 1E 20
 DB 53 03 00 DB 92 12 20 03 00 22 20 CB 43 03 00
-B0 12 E8 5C 08 12 0A 12 B0 12 4C 61 2A 91 05 24
-B0 12 C4 61 2A 41 B0 12 40 5C 3A 41 38 41 98 42
+B0 12 A8 5C 08 12 0A 12 B0 12 0C 61 2A 91 05 24
+B0 12 84 61 2A 41 B0 12 00 5C 3A 41 38 41 98 42
 26 20 00 1E 92 93 02 20 03 24 98 42 28 20 02 1E
-B0 12 C4 61 9B 42 26 20 0E 00 9B 42 28 20 10 00
-30 40 56 5D 50 5F 05 57 52 49 54 45 B0 12 7E 63
-30 4D 32 61 07 53 44 5F 45 4D 49 54 B2 90 00 02
-1E 20 02 28 B0 12 7E 63 18 42 1E 20 C8 4E 00 1E
+B0 12 84 61 9B 42 26 20 0E 00 9B 42 28 20 10 00
+30 40 16 5D 10 5F 05 57 52 49 54 45 B0 12 3E 63
+30 4D F2 60 07 53 44 5F 45 4D 49 54 B2 90 00 02
+1E 20 02 28 B0 12 3E 63 18 42 1E 20 C8 4E 00 1E
 92 53 1E 20 3E 4F 30 4D 58 4B 13 00 59 4B 14 00
 89 10 09 58 58 4B 15 00 5B 42 12 20 0A 43 3C 42
 08 11 09 10 4A 10 1C 83 0B 11 FA 2B 0A 11 1C 83
 FD 37 1B 42 32 20 19 5B 0A 00 18 6B 0C 00 8B 49
 0E 00 8B 48 10 00 CB 4A 03 00 1A 4B 12 00 BB C0
-FF 01 12 00 3A F0 FF 01 82 4A 1E 20 B0 12 F2 5D
+FF 01 12 00 3A F0 FF 01 82 4A 1E 20 B0 12 B2 5D
 30 4D 0C 93 38 20 38 90 E0 01 03 2C C8 93 20 1E
-02 24 7C 40 E5 00 C8 4C 00 1E B0 12 72 63 B0 12
-F4 5C 82 4A 2A 20 0B 4A B0 12 40 5C 1A 48 00 1E
+02 24 7C 40 E5 00 C8 4C 00 1E B0 12 32 63 B0 12
+B4 5C 82 4A 2A 20 0B 4A B0 12 00 5C 1A 48 00 1E
 88 43 00 1E 92 93 02 20 09 24 19 48 02 1E 88 43
 02 1E 39 F0 FF 0F 39 90 FF 0F 02 20 3A 93 0E 24
-82 4A 22 20 82 49 24 20 B0 12 F4 5C 0B 9A E6 27
-0A 12 0A 4B B0 12 C4 61 3A 41 DD 3F 0A 4B B0 12
-C4 61 B0 12 DE 5E 30 4D 8C 4E 08 54 45 52 4D 32
-53 44 22 00 0D 12 87 12 64 5F 2C 40 02 00 74 43
-E4 48 B6 5F 06 65 3D 41 92 C3 DC 05 08 43 B0 12
-A4 44 92 B3 DC 05 FD 27 59 42 CC 05 69 92 0D 24
+82 4A 22 20 82 49 24 20 B0 12 B4 5C 0B 9A E6 27
+0A 12 0A 4B B0 12 84 61 3A 41 DD 3F 0A 4B B0 12
+84 61 B0 12 9E 5E 30 4D 88 4E 08 54 45 52 4D 32
+53 44 22 00 0D 12 87 12 24 5F 2C 40 02 00 74 43
+C0 48 76 5F C6 64 3D 41 92 C3 DC 05 08 43 B0 12
+90 44 92 B3 DC 05 FD 27 59 42 CC 05 69 92 0D 24
 C8 49 00 1E 18 53 38 90 FF 01 F3 2B 03 24 B0 12
-7E 63 EC 3F B0 12 B0 44 EC 3F B0 12 B0 44 82 48
-1E 20 B0 12 DE 5E 3D 41 30 4D CA 4D 0A 7B 53 44
-5F 54 4F 4F 4C 53 7D 00 30 4D F4 63 06 53 45 43
-54 4F 52 00 09 4E 2A 4F B0 12 46 5C 0D 12 87 12
-42 42 D4 42 F0 42 AC 45 74 45 2C 40 00 1E 2C 40
-00 02 62 67 22 40 6A 5F 07 43 4C 55 53 54 45 52
-82 4E 24 20 A2 4F 22 20 B0 12 16 5D 9F 42 1A 20
-00 00 1E 42 1C 20 DE 3F F0 4F 03 46 41 54 2F 82
-8F 4E 02 00 9F 42 08 20 00 00 0E 43 D3 3F 5E 5F
+3E 63 EC 3F B0 12 A2 44 EC 3F B0 12 A2 44 82 48
+1E 20 B0 12 9E 5E 3D 41 30 4D C8 4D 0A 7B 53 44
+5F 54 4F 4F 4C 53 7D 00 30 4D B4 63 06 53 45 43
+54 4F 52 00 09 4E 2A 4F B0 12 06 5C 0D 12 87 12
+42 42 D4 42 F0 42 90 45 58 45 2C 40 00 1E 2C 40
+00 02 22 67 22 40 2A 5F 07 43 4C 55 53 54 45 52
+82 4E 24 20 A2 4F 22 20 B0 12 D6 5C 9F 42 1A 20
+00 00 1E 42 1C 20 DE 3F EC 4F 03 46 41 54 2F 82
+8F 4E 02 00 9F 42 08 20 00 00 0E 43 D3 3F 1E 5F
 03 44 49 52 2F 82 8F 4E 02 00 92 42 2C 20 22 20
-92 42 2E 20 24 20 E0 3F 4C 65 07 7B 54 4F 4F 4C
-53 7D 30 4D 94 54 03 41 4E 44 3E FF 30 4D 4E 50
+92 42 2E 20 24 20 E0 3F 0C 65 07 7B 54 4F 4F 4C
+53 7D 30 4D 7C 54 03 41 4E 44 3E FF 30 4D 4A 50
 02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF
 3E 40 80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F
-0E 11 0D 12 87 12 2C 40 3C 00 3E 45 5E 43 2C 40
-08 00 3E 45 2C 40 3E 00 3E 45 74 45 82 40 82 40
-8E 41 BA 41 3C 66 5A 40 5A 40 22 40 C0 41 F8 41
-EA 40 26 43 2C 40 02 00 D0 41 3E 66 22 40 F0 65
+0E 11 0D 12 87 12 2C 40 3C 00 1C 45 5E 43 2C 40
+08 00 1C 45 2C 40 3E 00 1C 45 58 45 82 40 82 40
+8E 41 BA 41 FC 65 5A 40 5A 40 22 40 C0 41 F8 41
+EA 40 26 43 2C 40 02 00 D0 41 FE 65 22 40 B0 65
 03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C
-D2 3F 36 47 01 3F 2E 4E 30 40 26 43 DA 50 03 50
-41 44 85 12 E4 1C E6 63 05 57 4F 52 44 53 0D 12
-87 12 F0 45 2C 40 03 00 8A 45 2C 40 D0 1D EA 40
-72 66 2C 40 10 00 3C 40 18 41 7E 4F 2C 40 00 00
+D2 3F CA 4C 01 3F 2E 4E 30 40 26 43 D6 50 03 50
+41 44 85 12 E4 1C A6 63 05 57 4F 52 44 53 0D 12
+87 12 BE 45 2C 40 03 00 6E 45 2C 40 CA 1D EA 40
+32 66 2C 40 10 00 3C 40 18 41 7A 4F 2C 40 00 00
 3C 40 2C 40 10 00 3C 40 18 41 2C 40 00 00 C0 41
-3C 40 F8 41 72 66 18 41 EA 40 A4 41 B0 41 CE 66
-5A 40 5A 40 F8 41 3C 40 72 66 18 41 EA 40 2C 40
-02 00 D0 41 B0 66 4C 40 B0 41 10 67 3C 40 2C 40
-02 00 20 41 EA 40 92 40 72 66 18 41 F2 40 3C 40
-E4 48 2C 40 7F 00 EA 65 AC 45 00 41 2C 40 0F 00
-EA 65 2C 40 10 00 70 40 20 41 8A 45 AC 41 9C 66
-5A 40 22 40 78 5F 03 4D 41 58 2E 9F 07 38 2F 53
-30 4D 16 67 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
-EA 64 03 55 2E 52 0D 12 87 12 A8 40 42 42 2C 40
+3C 40 F8 41 32 66 18 41 EA 40 A4 41 B0 41 8E 66
+5A 40 5A 40 F8 41 3C 40 32 66 18 41 EA 40 2C 40
+02 00 D0 41 70 66 4C 40 B0 41 D0 66 3C 40 2C 40
+02 00 20 41 EA 40 92 40 32 66 18 41 F2 40 3C 40
+C0 48 2C 40 7F 00 AA 65 90 45 00 41 2C 40 0F 00
+AA 65 2C 40 10 00 70 40 20 41 6E 45 AC 41 5C 66
+5A 40 22 40 38 5F 03 4D 41 58 2E 9F 07 38 2F 53
+30 4D D6 66 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
+AA 64 03 55 2E 52 0D 12 87 12 A8 40 42 42 2C 40
 00 00 A2 42 D4 42 F0 42 B4 40 82 40 20 41 2C 40
-00 00 1A 67 8A 45 AC 45 22 40 C0 65 04 44 55 4D
-50 00 0D 12 12 12 E2 1D B2 40 10 00 E2 1D 2E 5F
+00 00 DA 66 6E 45 90 45 22 40 80 65 04 44 55 4D
+50 00 0D 12 12 12 DC 1D B2 40 10 00 DC 1D 2E 5F
 87 12 70 40 82 40 82 40 26 43 2C 40 01 00 20 41
-26 43 2C 40 FE FF EA 65 C0 41 F0 45 F8 41 2C 40
-07 00 36 67 74 45 F8 41 2C 40 10 00 18 41 F8 41
-C0 41 F8 41 00 41 2C 40 03 00 36 67 E2 41 A2 67
-74 45 74 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41
-F8 41 00 41 2C 40 7E 00 28 67 20 42 1A 67 3E 45
-E2 41 C0 67 2C 40 10 00 D0 41 8A 67 B4 40 2C 42
+26 43 2C 40 FE FF AA 65 C0 41 BE 45 F8 41 2C 40
+07 00 F6 66 58 45 F8 41 2C 40 10 00 18 41 F8 41
+C0 41 F8 41 00 41 2C 40 03 00 F6 66 E2 41 62 67
+58 45 58 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41
+F8 41 00 41 2C 40 7E 00 E8 66 20 42 DA 66 1C 45
+E2 41 80 67 2C 40 10 00 D0 41 4A 67 B4 40 2C 42
 F2 40 22 40
 @FFFE
-AE 51
+9C 51
 q
index d9ba1e7..72c6211 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 DE 44 80 3E 00 24 05 00 18 00 F0 67 54 54
-A4 44 B6 44 52 5C 8E 5C
+10 00 11 00 00 4A 80 3E 05 00 18 00 A4 67 30 54
+90 44 A2 44 06 5C 42 5C 00 00
+@2000
+00 00
 @4000
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 41 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 41 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 41 02 42 4C 00
-85 12 20 00 1C 42 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 42 04 42 41 53 45 00 85 12 DC 1D
 C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 41 06 55 4D 2F
 4D 4F 44 00 30 12 5A 40 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 40 05 53 54 41 54 45 85 12 BE 1D 7E 41 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 40 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 42
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 42 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 42
 02 23 53 00 0D 12 87 12 A2 42 DC 42 2D 83 09 93
@@ -53,594 +55,590 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 42 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 42 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 42 02 55 2E 00 0D 12 87 12 42 42 2C 40 00 00
-D4 42 F0 42 B8 45 80 45 22 40 3E 41 02 44 2E 00
+D4 42 F0 42 90 45 58 45 22 40 3E 41 02 44 2E 00
 0D 12 87 12 42 42 70 40 82 40 44 41 D4 42 92 40
-14 43 F0 42 B8 45 80 45 22 40 7C 40 01 2E 0E 93
+14 43 F0 42 90 45 58 45 22 40 7C 40 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 43 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 40 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 42 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 43 05 28 4B 45 59 29 18 42
-CC 05 2F 83 8F 4E 00 00 B0 12 A4 44 92 B3 DC 05
-FD 27 1E 42 CC 05 B0 12 B6 44 30 4D 08 42 03 4B
-45 59 30 40 AE 43 0D 12 3D 40 F6 43 1B 42 32 20
-9B 42 1E 20 16 00 1A 4F 02 00 8F 4E 00 00 0E 43
-19 42 1E 20 02 3C F8 43 2D 83 19 92 20 20 15 2C
-58 49 00 1E 19 53 78 90 20 00 08 2C 78 90 0A 00
-F4 23 82 49 1E 20 2F 53 3D 41 30 4D 2E 9F 72 24
-CA 48 00 00 1A 53 1E 53 6D 3C 0A 12 B0 12 94 5D
-3A 41 DE 3F 92 43 03 43 49 42 85 12 3C 1D 3F 80
-06 00 8F 4E 04 00 3E 40 54 00 9F 42 3C 44 00 00
-AF 4F 02 00 05 3C 82 43 06 41 43 43 45 50 54 00
-30 40 70 44 A8 43 08 28 41 43 43 45 50 54 29 00
-3C 40 1C 45 3B 40 E6 44 2D 15 0A 4E 2E 4F 0A 5E
-3B 40 0D 00 3C 40 20 00 3D 40 10 45 92 B3 DC 05
-05 24 18 42 CC 05 38 90 0A 00 04 20 21 53 39 40
-CA 44 4D 15 A2 B3 DC 05 FD 27 B2 40 11 00 CE 05
-E2 C2 23 02 30 41 B2 40 13 00 CE 05 E2 D2 23 02
-30 41 00 00 05 53 4C 45 45 50 30 40 D8 44 00 00
-07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F 21 52
-3A 17 58 42 CC 05 48 9C 08 2C 48 9B E4 27 78 92
-11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24 CE 48
-00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05 30 4D
-12 45 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40 18 00
-0A 18 82 93 E4 1D 02 24 92 53 E4 1D 3E 8F 3D 41
-30 4D 66 44 06 28 45 4D 49 54 29 00 08 4E 3E 4F
-E1 3F 3C 43 04 45 4D 49 54 00 30 40 3C 45 44 45
-04 45 43 48 4F 00 B2 40 82 48 0A 45 82 43 E4 1D
-30 4D 5C 43 06 4E 4F 45 43 48 4F 00 B2 40 30 4D
-0A 45 92 43 E4 1D 30 4D 0E 43 05 53 50 41 43 45
-2F 83 8F 4E 00 00 3E 40 20 00 DF 3F 7A 45 06 53
-50 41 43 45 53 00 0E 93 09 24 0D 12 3D 40 A2 45
-EF 3F A4 45 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D
-22 43 04 54 59 50 45 00 0E 93 0F 24 1E 15 3D 40
-CE 45 28 4F 7E 48 8F 48 00 00 2F 83 BE 3F D0 45
-2D 83 91 83 02 00 F5 23 1D 17 2F 53 3E 4F 30 4D
-34 45 04 28 43 52 29 00 0D 12 87 12 00 46 02 0D
-0A 00 B8 45 22 40 36 44 02 43 52 00 30 40 E8 45
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 40 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 42 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 42 03 4B 45 59 30 40 B0 43
+18 42 CC 05 2F 83 8F 4E 00 00 B0 12 90 44 92 B3
+DC 05 FD 27 1E 42 CC 05 B0 12 A2 44 30 4D 0D 12
+3D 40 EE 43 1B 42 32 20 9B 42 1E 20 16 00 1A 4F
+02 00 8F 4E 00 00 0E 43 19 42 1E 20 02 3C F0 43
+2D 83 19 92 20 20 15 2C 58 49 00 1E 19 53 78 90
+20 00 08 2C 78 90 0A 00 F4 23 82 49 1E 20 2F 53
+3D 41 30 4D 2E 9F 67 24 CA 48 00 00 1A 53 1E 53
+62 3C 0A 12 B0 12 48 5D 3A 41 DE 3F 92 43 03 43
+49 42 85 12 3C 1D 3F 80 06 00 8F 4E 04 00 3E 40
+54 00 9F 42 34 44 00 00 AF 4F 02 00 05 3C 82 43
+06 41 43 43 45 50 54 00 30 40 5C 44 3C 40 FE 44
+3B 40 C8 44 2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00
+3C 40 20 00 3D 40 F2 44 92 B3 DC 05 05 24 18 42
+CC 05 38 90 0A 00 04 20 21 53 39 40 B6 44 4D 15
+A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2 23 02
+30 41 B2 40 13 00 CE 05 E2 D2 23 02 30 41 00 00
+05 53 4C 45 45 50 30 40 BA 44 12 D2 0A 18 FB 3F
+21 52 3A 17 58 42 CC 05 48 9C 08 2C 48 9B E9 27
+78 92 11 20 2E 9F 0F 24 1E 83 05 3C 0E 9A 03 24
+CE 48 00 00 1E 53 A2 B3 DC 05 FD 27 82 48 CE 05
+30 4D F4 44 2D 83 92 B3 DC 05 E4 23 FC 27 B2 40
+18 00 0A 18 82 93 DE 1D 02 24 92 53 DE 1D 3E 8F
+3D 41 30 4D 3C 43 04 45 4D 49 54 00 30 40 20 45
+08 4E 3E 4F E0 3F 16 45 04 45 43 48 4F 00 B2 40
+82 48 EC 44 82 43 DE 1D 30 4D 5C 43 06 4E 4F 45
+43 48 4F 00 B2 40 30 4D EC 44 92 43 DE 1D 30 4D
+0E 43 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
+20 00 DC 3F 52 45 06 53 50 41 43 45 53 00 0E 93
+09 24 0D 12 3D 40 7A 45 EF 3F 7C 45 2D 83 1E 83
+EB 23 3D 41 3E 4F 30 4D 22 43 04 54 59 50 45 00
+0E 93 0F 24 1E 15 3D 40 A6 45 28 4F 7E 48 8F 48
+00 00 2F 83 BB 3F A8 45 2D 83 91 83 02 00 F5 23
+1D 17 2F 53 3E 4F 30 4D 2E 44 02 43 52 00 30 40
+C2 45 0D 12 87 12 D0 45 02 0D 0A 00 90 45 22 40
 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3
-0D 63 30 4D F8 45 07 43 41 50 53 5F 4F 4E B2 43
-B4 1D 30 4D 16 46 08 43 41 50 53 5F 4F 46 46 00
-82 43 B4 1D 30 4D 8E 45 82 53 22 00 0D 12 87 12
-2C 40 00 46 A8 48 30 46 2C 40 22 00 84 46 1E 46
-52 46 3D 41 6E 4E 1E 83 82 5E CC 1D 3E 4F 92 B3
-CC 1D A2 63 CC 1D 30 4D 64 45 82 2E 22 00 0D 12
-87 12 3C 46 2C 40 B8 45 A8 48 22 40 00 00 04 57
-4F 52 44 00 3C 40 C6 1D 39 4C 3A 4C 09 5A 3A 5C
+0D 63 30 4D BA 45 07 43 41 50 53 5F 4F 4E B2 43
+B4 1D 30 4D E6 45 08 43 41 50 53 5F 4F 46 46 00
+82 43 B4 1D 30 4D 66 45 82 53 22 00 0D 12 87 12
+2C 40 D0 45 78 48 00 46 2C 40 22 00 54 46 EE 45
+22 46 3D 41 6E 4E 1E 83 82 5E C6 1D 3E 4F 92 B3
+C6 1D A2 63 C6 1D 30 4D 3C 45 82 2E 22 00 0D 12
+87 12 0C 46 2C 40 90 45 78 48 22 40 00 00 04 57
+4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C 09 5A 3A 5C
 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83 3B 40 60 00
 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53
 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90 7B 00 F0 2F
-7C 80 20 00 ED 3F 1A 82 C8 1D 82 4A CA 1D 1E 42
-CC 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
-44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 D0 1D
+7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A C4 1D 1E 42
+C6 1D 08 8E CE 48 00 00 30 4D 00 00 04 46 49 4E
+44 00 2F 83 0C 4E 65 4C 74 40 80 00 3B 40 CA 1D
 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0 1E 00 0E 58
 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E 78 49 48 C4
 48 95 F7 23 0A 4C 1A 53 FA 99 00 00 F2 23 58 83
 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43 4A 93 01 30
 2E 83 8F 4C 00 00 35 40 00 40 34 40 0C 40 30 4D
 8C 41 07 3E 4E 55 4D 42 45 52 3C 4F 38 4F 29 4F
-2F 82 1B 42 E2 1D 6A 4C 7A 80 30 00 7A 90 0A 00
+2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00 7A 90 0A 00
 05 28 7A 80 07 00 7A 90 0A 00 13 28 0A 9B 11 2C
 82 49 D0 04 82 48 D2 04 82 4B C8 04 19 42 E4 04
 18 42 E6 04 09 5A 08 63 1C 53 1E 83 E4 23 8F 48
 02 00 8F 4C 00 00 8F 49 04 00 30 4D 0C 43 1B 42
-E2 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 EC 47
+DC 1D 32 C0 00 02 2D 15 09 43 08 43 3D 40 BC 47
 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00
 10 2C 5A 83 2B 43 7A 52 07 24 3B 52 6A 53 04 24
 3B 40 10 00 5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80
-2C 00 5A 93 B8 23 B1 43 02 00 CE 3F EE 47 0E 93
+2C 00 5A 93 B8 23 B1 43 02 00 CE 3F BE 47 0E 93
 32 24 32 B0 00 02 2F 20 32 D0 00 02 FC 90 2E 00
 00 00 02 20 2D 83 C0 3F FC 90 2C 00 00 00 23 20
 0A 4E 09 43 8F 49 02 00 5A 83 09 4A 09 5C 69 49
 39 80 30 00 79 90 0A 00 05 28 79 80 07 00 79 90
 0A 00 0A 28 09 9B 08 2C 8F 49 00 00 0E 4B 2C 15
 B0 12 58 42 2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F
-04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B E2 1D 04 24
+04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B DC 1D 04 24
 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F 02 00 04 00
 BF 4F 00 00 3E E3 09 20 3E E3 BF E3 02 00 BF E3
 00 00 9F 53 02 00 8F 63 00 00 32 B0 00 02 01 20
-2F 53 30 4D 50 45 07 45 58 45 43 55 54 45 0A 4E
-3E 4F 00 4A 1E 41 01 2C 1A 42 CC 1D A2 53 CC 1D
-8A 4E 00 00 3E 4F 30 4D A6 48 87 4C 49 54 45 52
-41 4C 82 93 BE 1D 0F 24 1A 42 CC 1D A2 52 CC 1D
+2F 53 30 4D 28 45 07 45 58 45 43 55 54 45 0A 4E
+3E 4F 00 4A 1E 41 01 2C 1A 42 C6 1D A2 53 C6 1D
+8A 4E 00 00 3E 4F 30 4D 76 48 87 4C 49 54 45 52
+41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D A2 52 C6 1D
 BA 40 2C 40 00 00 8A 4E 02 00 3E 4F 32 B0 00 02
-32 C0 00 02 F1 23 30 4D 26 46 05 43 4F 55 4E 54
+32 C0 00 02 F1 23 30 4D F6 45 05 43 4F 55 4E 54
 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF 30 4D 82 43
-CA 1D 82 4E C6 1D B2 4F C8 1D 3E 4F 30 4D 0D 12
-87 12 FE 48 20 42 84 46 1A 49 3D 40 22 49 E1 22
-44 3E 24 49 0A 4E 3E 4F 3D 40 3A 49 37 27 3D 40
-14 49 1A E2 BE 1D B8 27 B2 23 3C 49 3E 4F 3D 40
-14 49 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
-00 00 3D 40 E6 4B CC 3F 96 48 08 45 56 41 4C 55
-41 54 45 00 39 40 C6 1D 3C 49 3B 49 3A 49 3D 15
-87 12 0E 49 76 49 B2 41 CA 1D B2 41 C8 1D B2 41
-C6 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
+C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F 30 4D 0D 12
+87 12 CE 48 20 42 54 46 EA 48 3D 40 F2 48 E1 22
+48 3E F4 48 0A 4E 3E 4F 3D 40 0A 49 37 27 3D 40
+E4 48 1A E2 BE 1D B8 27 B2 23 0C 49 3E 4F 3D 40
+E4 48 BF 23 DE 53 00 00 68 4E 08 5E F8 40 3F 00
+00 00 3D 40 AE 4B CC 3F 66 48 08 45 56 41 4C 55
+41 54 45 00 39 40 C0 1D 3C 49 3B 49 3A 49 3D 15
+87 12 DE 48 46 49 B2 41 C4 1D B2 41 C2 1D B2 41
+C0 1D 3D 41 30 4D 94 41 04 51 55 49 54 00 31 40
 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D 82 43 08 18
-87 12 00 46 05 0D 0A 6F 6B 20 B8 45 3E 44 80 45
-0E 49 D6 40 68 41 00 46 0D 73 74 61 63 6B 20 65
-6D 70 74 79 21 20 4C 4A 2C 40 30 FF 74 43 A4 41
-00 46 0B 46 52 41 4D 20 66 75 6C 6C 21 20 4C 4A
-38 42 EA 40 B0 41 A2 49 00 46 05 0D 0A 20 20 20
-AC 41 AA 49 58 44 05 41 42 4F 52 54 3F 40 80 1C
-C6 3F B2 40 4C 51 AA 51 B2 40 D8 44 CC 44 B2 40
-3C 45 4C 45 B2 40 E8 45 FE 45 B2 40 AE 43 D4 43
-B2 40 3C 1D 3C 44 B2 40 70 44 62 44 82 43 DA 5A
-82 43 E6 5A 82 43 F2 5A 82 43 22 5B 82 43 2E 5B
-82 43 3A 5B B2 40 0A 00 E2 1D 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 0A 45 1B 42
-32 20 0B 93 04 24 CB 43 02 00 2B 4B FA 3F B0 12
-0E 4A A2 B3 DC 05 FD 27 B2 40 11 00 CE 05 E2 C2
-23 02 92 C3 DC 05 38 40 A0 AA 39 42 03 43 19 83
-FD 23 18 83 FA 23 92 B3 DC 05 F3 23 0D 12 87 12
-00 46 04 1B 5B 37 6D 00 B8 45 2C 40 E4 1D EA 40
-4C 40 B0 41 C6 4A 00 46 05 6C 69 6E 65 3A B8 45
-38 41 26 43 56 45 B8 45 00 46 04 1B 5B 30 6D 00
-B8 45 C2 50 1E 46 FC 49 F6 49 86 41 42 4F 52 54
-22 00 0D 12 87 12 3C 46 2C 40 4C 4A A8 48 22 40
-DC 46 01 27 0D 12 87 12 20 42 84 46 E2 46 B0 41
-04 4B 22 40 44 49 3E 42 81 5C 92 42 C6 1D CA 1D
-30 4D 00 00 81 5B 82 43 BE 1D 30 4D 08 4B 01 5D
-B2 43 BE 1D 30 4D 14 4B 83 5B 27 5D 0D 12 87 12
-F4 4A 2C 40 2C 40 A8 48 A8 48 22 40 BE 4F 02 00
-3E 4F 30 4D E2 45 82 49 53 00 0D 12 87 12 38 42
-EA 40 B0 41 60 4B 2C 4B 2C 40 3C 4B A8 48 22 40
-F4 4A 3C 4B 22 40 46 4B 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 38 46
-87 52 45 43 55 52 53 45 19 42 CC 1D 99 42 BA 1D
-00 00 A2 53 CC 1D 30 4D 88 49 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 42 84 46 E2 46 4C 40
-B0 41 04 4B 68 41 B0 41 C6 4B 2C 40 2C 40 A8 48
-A8 48 2C 40 A8 48 A8 48 22 40 82 9F BC 1D 2C 25
-0D 12 87 12 00 46 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 58 4A 28 4B 81 3B 82 93 BE 1D
-8C 27 0D 12 87 12 2C 40 22 40 A8 48 CA 4B 16 4B
-22 40 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 1D 82 4F BC 1D 30 4D EA 4B 01 3A 30 12 02 4C
-0D 12 87 12 5E 46 20 42 84 46 2C 4C 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 1D 82 49 B8 1D 82 4A
-BA 1D 2A 52 82 4A CC 1D 30 41 7E 46 08 56 41 52
-49 41 42 4C 45 00 B0 12 20 4C BA 40 86 12 FC FF
-DF 3C EA 48 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-20 4C BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-74 4C 06 43 52 45 41 54 45 00 B0 12 20 4C BA 40
-85 12 FC FF 8A 4A FE FF C3 3C 5A 49 05 44 4F 45
-53 3E 1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D AC 4C 05 44 45 46 45 52 B0 12 20 4C
-BA 40 30 40 FC FF BA 40 C2 4C FE FF A9 3C 92 4C
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-1A 4C 86 5B 54 48 45 4E 5D 00 30 4D 12 4D 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C 40 01 00 20 42
-84 46 F0 48 3C 40 B0 41 92 4D 82 40 82 40 00 46
-04 5B 49 46 5D 00 E8 4C BA 41 54 4D DA 45 2E 41
-AC 41 8A 4D 82 40 82 40 00 46 06 5B 45 4C 53 45
-5D 00 E8 4C BA 41 78 4D DA 45 38 41 3C 40 B0 41
-8A 4D 2E 41 AC 41 8A 4D 00 46 06 5B 54 48 45 4E
-5D 00 E8 4C BA 41 8A 4D 38 41 4C 40 BA 41 2E 4D
-22 40 DA 45 00 46 05 0D 0A 6B 6F 20 B8 45 3E 44
-FE 48 AC 41 2E 4D 1E 4D 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D A8 4D 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 42 84 46 E2 46 64 40
-5C 41 22 40 B8 4D 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 42 84 46 E2 46 64 40 22 40 F0 4D
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D BA 48
-06 4D 41 52 4B 45 52 00 B0 12 20 4C BA 40 84 12
-FC FF BA 40 EE 4D FE FF 9A 42 CE 1D 00 00 28 83
-8A 48 02 00 A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D
-A8 49 FE FF 89 48 00 00 30 4D 68 4B 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 1D A2 52 CC 1D BE 40
-B0 41 00 00 2E 53 30 4D C6 4C 84 45 4C 53 45 00
-A2 52 CC 1D 1A 42 CC 1D BA 40 AC 41 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D B2 45 84 54 48 45 4E 00
-9E 42 CC 1D 00 00 3E 4F 30 4D E0 4C 85 42 45 47
-49 4E 30 40 74 43 7A 4E 85 55 4E 54 49 4C 39 40
-B0 41 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D DA 4A 85 41 47 41 49 4E 39 40
-AC 41 EF 3F 5C 4C 85 57 48 49 4C 45 0D 12 87 12
-40 4E 70 40 22 40 80 4B 86 52 45 50 45 41 54 00
-0D 12 87 12 BE 4E 80 4E 22 40 5A 4E 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42 CC 1D BE 40
+87 12 D0 45 05 0D 0A 6F 6B 20 90 45 36 44 58 45
+DE 48 D6 40 68 41 D0 45 0D 73 74 61 63 6B 20 65
+6D 70 74 79 21 20 14 4A 2C 40 30 FF 74 43 A4 41
+D0 45 0B 46 52 41 4D 20 66 75 6C 6C 21 20 14 4A
+38 42 EA 40 B0 41 72 49 D0 45 05 0D 0A 20 20 20
+AC 41 7A 49 50 44 05 41 42 4F 52 54 3F 40 80 1C
+C6 3F B2 40 3A 51 38 51 B2 40 BA 44 B8 44 B2 40
+20 45 1E 45 B2 40 C2 45 C0 45 B2 40 B0 43 AE 43
+B2 40 3C 1D 34 44 B2 40 5C 44 5A 44 38 40 0A 00
+82 48 DC 1D 88 43 E8 1D 28 83 FC 2F B2 40 0A 00
+DC 1D 30 41 8F 93 02 00 03 20 2F 52 3E 4F 30 4D
+B2 40 82 48 EC 44 1B 42 32 20 0B 93 04 24 CB 43
+02 00 2B 4B FA 3F B0 12 DE 49 A2 B3 DC 05 FD 27
+B2 40 11 00 CE 05 E2 C2 23 02 92 C3 DC 05 38 40
+A0 AA 39 42 03 43 19 83 FD 23 18 83 FA 23 92 B3
+DC 05 F3 23 0D 12 87 12 D0 45 04 1B 5B 37 6D 00
+90 45 2C 40 DE 1D EA 40 4C 40 B0 41 8E 4A D0 45
+05 6C 69 6E 65 3A 90 45 38 41 26 43 2E 45 90 45
+D0 45 04 1B 5B 30 6D 00 90 45 B2 50 EE 45 CC 49
+C6 49 86 41 42 4F 52 54 22 00 0D 12 87 12 0C 46
+2C 40 14 4A 78 48 22 40 AC 46 01 27 0D 12 87 12
+20 42 54 46 B2 46 B0 41 CC 4A 22 40 14 49 3E 42
+81 5C 92 42 C0 1D C4 1D 30 4D 00 00 81 5B 82 43
+BE 1D 30 4D D0 4A 01 5D B2 43 BE 1D 30 4D DC 4A
+83 5B 27 5D 0D 12 87 12 BC 4A 2C 40 2C 40 78 48
+78 48 22 40 BE 4F 02 00 3E 4F 30 4D 6E 43 82 49
+53 00 0D 12 87 12 38 42 EA 40 B0 41 28 4B F4 4A
+2C 40 04 4B 78 48 22 40 BC 4A 04 4B 22 40 0E 4B
+09 49 4D 4D 45 44 49 41 54 45 1A 42 B6 1D FA D0
+80 00 00 00 30 4D 08 46 87 52 45 43 55 52 53 45
+19 42 C6 1D 99 42 BA 1D 00 00 A2 53 C6 1D 30 4D
+58 49 88 50 4F 53 54 50 4F 4E 45 00 0D 12 87 12
+20 42 54 46 B2 46 4C 40 B0 41 CC 4A 68 41 B0 41
+8E 4B 2C 40 2C 40 78 48 78 48 2C 40 78 48 78 48
+22 40 82 9F BC 1D 40 25 0D 12 87 12 D0 45 0F 73
+74 61 63 6B 20 6D 69 73 6D 61 74 63 68 21 20 4A
+F0 4A 81 3B 82 93 BE 1D 8C 27 0D 12 87 12 2C 40
+22 40 78 48 92 4B DE 4A 22 40 B2 4B 07 3A 4E 4F
+4E 41 4D 45 2F 83 8F 4E 00 00 1E 42 C6 1D 0A 4E
+39 40 00 02 08 49 28 53 B0 12 3C 4C BA 40 0D 12
+FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F BC 1D
+30 4D CC 4B 01 3A 30 12 EC 4B 0D 12 87 12 2E 46
+20 42 54 46 16 4C 08 4E 7A 4E 5A D3 5A 53 0A 58
+19 42 DA 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F 3D 41
+BA 40 30 40 00 00 BA 40 00 4C 02 00 82 48 B6 1D
+82 49 B8 1D 82 4A BA 1D 2A 52 82 4A C6 1D 30 41
+4E 46 08 56 41 52 49 41 42 4C 45 00 B0 12 0A 4C
+BA 40 86 12 FC FF DC 3C BA 48 08 43 4F 4E 53 54
+41 4E 54 00 B0 12 0A 4C BA 40 85 12 FC FF 8A 4E
+FE FF 3E 4F CD 3C 6A 4C 06 43 52 45 41 54 45 00
+B0 12 0A 4C BA 40 85 12 FC FF 8A 4A FE FF C0 3C
+2A 49 05 44 4F 45 53 3E 1A 42 BA 1D BA 40 84 12
+00 00 8A 4D 02 00 3D 41 30 4D A2 4C 05 44 45 46
+45 52 B0 12 0A 4C AC 3C 12 47 05 3E 42 4F 44 59
+2E 52 30 4D 88 4C 07 43 4F 4D 50 41 52 45 0C 4E
+38 4F 3B 4F 39 4F 0E 4B 0E 5C 0C 24 1B 83 07 30
+1C 83 07 30 19 53 F9 98 FF FF F5 27 02 2C 3E 43
+30 4D 1E 43 30 4D 04 4C 86 5B 54 48 45 4E 5D 00
+30 4D 08 4D 86 5B 45 4C 53 45 5D 00 0D 12 87 12
+2C 40 01 00 20 42 54 46 C0 48 3C 40 B0 41 88 4D
+82 40 82 40 D0 45 04 5B 49 46 5D 00 DE 4C BA 41
+4A 4D B2 45 2E 41 AC 41 80 4D 82 40 82 40 D0 45
+06 5B 45 4C 53 45 5D 00 DE 4C BA 41 6E 4D B2 45
+38 41 3C 40 B0 41 80 4D 2E 41 AC 41 80 4D D0 45
+06 5B 54 48 45 4E 5D 00 DE 4C BA 41 80 4D 38 41
+4C 40 BA 41 24 4D 22 40 B2 45 D0 45 05 0D 0A 6B
+6F 20 90 45 36 44 CE 48 AC 41 24 4D 14 4D 84 5B
+49 46 5D 00 0E 93 3E 4F B9 27 30 4D 9E 4D 89 5B
+44 45 46 49 4E 45 44 5D 0D 12 87 12 20 42 54 46
+B2 46 64 40 22 40 AE 4D 8B 5B 55 4E 44 45 46 49
+4E 45 44 5D 0D 12 87 12 B8 4D 5C 41 22 40 E0 4D
+3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 8A 48
+06 4D 41 52 4B 45 52 00 B0 12 0A 4C BA 40 84 12
+FC FF BA 40 DE 4D FE FF 9A 42 C8 1D 00 00 28 83
+8A 48 02 00 A2 52 C6 1D 18 42 B6 1D 19 42 B8 1D
+A8 49 FE FF 89 48 00 00 30 4D 30 4B 82 49 46 00
+2F 83 8F 4E 00 00 1E 42 C6 1D A2 52 C6 1D BE 40
+B0 41 00 00 2E 53 30 4D BC 4C 84 45 4C 53 45 00
+A2 52 C6 1D 1A 42 C6 1D BA 40 AC 41 FC FF 8E 4A
+00 00 2A 83 0E 4A 30 4D 8A 45 84 54 48 45 4E 00
+9E 42 C6 1D 00 00 3E 4F 30 4D D6 4C 85 42 45 47
+49 4E 30 40 74 43 6A 4E 85 55 4E 54 49 4C 39 40
+B0 41 A2 52 C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E
+FE FF 3E 4F 30 4D A2 4A 85 41 47 41 49 4E 39 40
+AC 41 EF 3F 52 4C 85 57 48 49 4C 45 0D 12 87 12
+30 4E 70 40 22 40 48 4B 86 52 45 50 45 41 54 00
+0D 12 87 12 AE 4E 70 4E 22 40 4A 4E 82 44 4F 00
+2F 83 8F 4E 00 00 A2 53 C6 1D 1E 42 C6 1D BE 40
 C0 41 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
-30 4D 00 4E 84 4C 4F 4F 50 00 39 40 E2 41 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42
+30 4D F0 4D 84 4C 4F 4F 50 00 39 40 E2 41 A2 52
+C6 1D 1A 42 C6 1D 8A 49 FC FF 8A 4E FE FF 1E 42
 00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE 43 85 2B 4C 4F 4F 50 39 40
-D0 41 E5 3F 14 4F 85 4C 45 41 56 45 1A 42 CC 1D
+F6 3F 3E 4F 30 4D A8 43 85 2B 4C 4F 4F 50 39 40
+D0 41 E5 3F 04 4F 85 4C 45 41 56 45 1A 42 C6 1D
 BA 40 F2 41 00 00 BA 40 AC 41 02 00 B2 50 06 00
-CC 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
-30 4D 56 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
+C6 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
+30 4D 46 4F 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
 3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
 18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D C6 4E 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 9A 4C 2C 40
-10 00 2C 40 00 00 C0 41 2C 40 00 00 A8 48 E2 41
-D8 4F 74 43 2C 40 CE 1D 3C 40 EA 40 A8 48 F2 40
-B2 4C 2C 40 D0 1D F2 40 22 40 F2 4A 05 46 4F 52
-54 48 84 12 F2 4F F2 65 94 65 68 67 B6 65 58 54
-48 4F 30 67 5C 66 7A 66 68 65 3E 67 84 66 00 00
-E6 65 1E 4B 70 66 00 00 B8 4E 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 1D 38 40 D2 1D B5 3F 9A 4B
+E8 49 00 00 1A 83 FA 23 30 4D B6 4E 0A 56 4F 43
+41 42 55 4C 41 52 59 00 0D 12 87 12 90 4C 2C 40
+10 00 2C 40 00 00 C0 41 2C 40 00 00 78 48 E2 41
+C8 4F 74 43 2C 40 C8 1D 3C 40 EA 40 78 48 F2 40
+A8 4C 2C 40 CA 1D F2 40 22 40 BA 4A 05 46 4F 52
+54 48 84 12 E2 4F A6 65 48 65 1C 67 6A 65 34 54
+38 4F E4 66 10 66 2E 66 1C 65 F2 66 38 66 00 00
+9A 65 E6 4A 24 66 00 00 A8 4E 04 41 4C 53 4F 00
+3A 40 0C 00 39 40 CA 1D 38 40 CC 1D B5 3F 62 4B
 08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 1D 38 40 D0 1D A2 3F 6A 46 04 4F 4E 4C 59 00
-82 43 D2 1D 30 4D EC 4E 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 1D E0 1D 30 4D 02 50 60 50
-74 50 84 50 3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D
+CC 1D 38 40 CA 1D A2 3F 3A 46 04 4F 4E 4C 59 00
+82 43 CC 1D 30 4D DC 4E 0B 44 45 46 49 4E 49 54
+49 4F 4E 53 92 42 CA 1D DA 1D 30 4D F2 4F 50 50
+64 50 74 50 3A 4E 82 4A C8 1D 2E 4E 82 4E C6 1D
 3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
 FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D 40 50 09 50 57 52 5F 53 54 41
-54 45 84 12 7C 50 54 54 F0 67 D8 4E 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 C6 50 92 42 0C 18
-C8 50 EF 3F B8 50 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 1D C6 50 92 42 CC 1D C8 50 30 4D CC 50
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 1D 0E 18
-92 42 CC 1D 0C 18 EC 3F BC 4F 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 B4 FF FA 23
-B0 12 02 4A B2 40 F0 67 0C 18 B2 40 54 54 0E 18
-CA 3F 3C 4E 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 00 46 06 0D 1B 5B 37 6D 23 00 B8 45
-5E 43 00 46 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 B8 45 2C 40 30 FF 74 43 20 41 26 43
-00 46 0B 62 79 74 65 73 20 66 72 65 65 20 6E 4A
-1A 51 04 57 41 52 4D 00 30 40 4C 51 8C 4E 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A 5C 01
-B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0 03 00
-06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43 22 02
-B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3 66 02
-F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01 F2 40
-10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01 B2 40
-48 00 62 01 82 43 66 01 39 40 00 01 B2 40 33 00
-64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93 08 18
-01 24 59 07 38 40 59 14 18 83 FE 23 19 83 FA 23
-B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00 A1 04
-F2 C0 40 00 A2 04 3A 40 BA 51 39 40 B4 FF 89 4A
-00 00 29 53 FC 23 92 42 02 18 F0 FF B2 40 18 00
-0A 18 39 40 00 1C 89 43 00 00 29 53 39 90 FF 2B
-FA 2B 31 40 E0 1C 3F 40 80 1C 37 40 22 40 36 40
-B4 40 35 40 00 40 34 40 0C 40 B2 40 0A 00 E2 1D
-B2 43 B4 1D 92 C3 30 01 18 42 08 18 D2 B3 01 02
-04 20 38 E3 18 53 82 48 08 18 B2 40 81 00 C0 05
-B2 40 11 00 C6 05 B2 40 00 4A C8 05 F2 D0 03 00
-0D 02 92 C3 C0 05 92 D3 DA 05 3D 40 F0 52 38 90
-0A 00 1E 27 38 90 16 00 1B 2F 28 93 F4 22 E9 26
-F2 52 E2 B2 60 02 58 23 B2 40 81 A9 40 06 B2 40
-30 00 46 06 D2 D3 25 02 B2 D0 C0 04 0C 02 92 C3
-40 06 39 42 B0 12 2A 5C D2 C3 23 02 2C 42 B2 40
-95 00 14 20 B2 40 00 40 18 20 B0 12 A0 5B 02 24
-30 40 C6 5C B0 12 28 5C 7A 93 FC 23 B2 40 87 AA
-14 20 92 43 16 20 B2 40 00 48 18 20 B0 12 A0 5B
-29 42 B0 12 2A 5C 92 43 14 20 82 43 16 20 78 43
-3C 42 B2 40 00 77 18 20 B0 12 A0 5B B2 40 40 69
-18 20 B0 12 E6 5B 03 24 58 83 F3 23 D9 3F 0C 5C
-A2 43 16 20 B2 40 00 50 18 20 B0 12 E6 5B D0 23
-92 D3 40 06 82 43 46 06 92 C3 40 06 B0 12 50 5C
-38 40 00 1E 92 48 C6 01 04 20 92 48 C8 01 06 20
-5A 48 C2 01 92 43 02 20 7A 80 06 00 0D 24 7A 82
-0B 24 A2 43 02 20 6A 53 07 24 5A 53 05 24 3A 50
-0B 20 0C 4A 30 40 CC 5C B0 12 50 5C D2 48 0D 00
-12 20 19 48 0E 00 82 49 08 20 1A 48 16 00 0A 93
-02 20 1A 48 24 00 82 4A 0A 20 09 5A 82 49 0C 20
-09 5A A2 93 02 20 04 24 82 49 0E 20 39 50 20 00
-19 82 12 20 19 82 12 20 82 49 10 20 92 42 02 20
-2C 20 C2 3E 2A 50 09 41 53 53 45 4D 42 4C 45 52
-84 12 F2 4F 7C 5A EA 5A 30 5A 54 5B F6 59 7C 5B
-FA 56 00 00 EC 59 A0 5A 4E 5A 8E 5A 0A 58 00 00
-00 00 8C 5B 26 50 44 51 85 48 49 32 4C 4F 0D 12
-87 12 74 43 54 4E A8 48 16 4B 30 50 30 54 22 40
-AE 51 04 43 4F 44 45 00 B0 12 20 4C A2 82 CC 1D
-0D 12 87 12 12 4C AC 41 6A 54 00 00 07 45 4E 44
-43 4F 44 45 0D 12 87 12 4A 50 CA 4B 22 40 26 54
-03 41 53 4D 92 42 E0 1D C0 1D B2 40 34 54 E0 1D
-E3 3F 8C 54 06 45 4E 44 41 53 4D 00 92 42 C0 1D
-E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 1D
-BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 1D
-B2 43 BE 1D 30 40 4A 50 00 00 05 4C 4F 32 48 49
-A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D 39 48
-2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A FC 27
-1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12 84 46
-E2 46 BA 41 2E 55 9C 47 B0 41 04 4B 50 55 30 55
-29 4E 39 90 86 12 02 20 2E 53 30 41 39 90 85 12
-03 20 1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52
-30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00 3E 40
-29 00 12 12 CA 1D 92 53 CA 1D 87 12 84 46 9C 47
-B0 41 80 55 76 55 21 53 3E 90 10 00 BE 2D 30 41
-82 55 B2 41 CA 1D 22 D3 30 41 0D 12 87 12 20 42
-FA 54 94 55 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53
-CA 1D B0 12 1C 55 0E 93 04 20 B2 40 00 03 C4 1D
-27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C 2E 93
-04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20 B2 40
-20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02 C4 1D
-0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C B2 40
-30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40
-10 02 C4 1D 92 53 CA 1D B0 12 1C 55 EB 3F FA 90
-40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53 CA 1D
-B0 12 62 55 0E 20 B2 50 10 00 C4 1D 3E 40 2B 00
-B0 12 62 55 33 24 92 92 C6 1D CA 1D 02 24 92 53
-CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 62 55 F9 23
-B2 50 10 00 C4 1D 3E 40 28 00 B0 12 1C 55 B0 12
-52 55 E8 3F 0D 12 87 12 20 42 FA 54 8E 56 FE 90
-26 00 00 00 3E 40 20 00 04 20 B2 50 82 00 C4 1D
-C1 3F B0 12 62 55 DE 23 B2 50 80 00 C4 1D 3E 40
-28 00 B0 12 1C 55 B0 12 52 55 D4 23 3D 40 04 4B
-30 4D C4 44 04 52 45 54 49 00 0D 12 87 12 2C 40
-00 13 A8 48 22 40 2C 40 2C 00 8A 55 84 56 E0 56
-2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F EA 54 03 4D
-4F 56 84 12 D6 56 00 40 EE 56 05 4D 4F 56 2E 42
-84 12 D6 56 40 40 00 00 03 41 44 44 84 12 D6 56
-00 50 08 57 05 41 44 44 2E 42 84 12 D6 56 40 50
-14 57 04 41 44 44 43 00 84 12 D6 56 00 60 22 57
-06 41 44 44 43 2E 42 00 84 12 D6 56 40 60 C4 56
-04 53 55 42 43 00 84 12 D6 56 00 70 40 57 06 53
-55 42 43 2E 42 00 84 12 D6 56 40 70 4E 57 03 53
-55 42 84 12 D6 56 00 80 5E 57 05 53 55 42 2E 42
-84 12 D6 56 40 80 C6 54 03 43 4D 50 84 12 D6 56
-00 90 78 57 05 43 4D 50 2E 42 84 12 D6 56 40 90
-B4 54 04 44 41 44 44 00 84 12 D6 56 00 A0 92 57
-06 44 41 44 44 2E 42 00 84 12 D6 56 40 A0 84 57
-03 42 49 54 84 12 D6 56 00 B0 B0 57 05 42 49 54
-2E 42 84 12 D6 56 40 B0 BC 57 03 42 49 43 84 12
-D6 56 00 C0 CA 57 05 42 49 43 2E 42 84 12 D6 56
-40 C0 D6 57 03 42 49 53 84 12 D6 56 00 D0 E4 57
-05 42 49 53 2E 42 84 12 D6 56 40 D0 00 00 03 58
-4F 52 84 12 D6 56 00 E0 FE 57 05 58 4F 52 2E 42
-84 12 D6 56 40 E0 30 57 03 41 4E 44 84 12 D6 56
-00 F0 18 58 05 41 4E 44 2E 42 84 12 D6 56 40 F0
-20 42 8A 55 36 58 1A 42 C4 1D B2 F0 70 00 C4 1D
-8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F 6A 57 03 52
-52 43 84 12 30 58 00 10 4E 58 05 52 52 43 2E 42
-84 12 30 58 40 10 5A 58 04 53 57 50 42 00 84 12
-30 58 80 10 68 58 03 52 52 41 84 12 30 58 00 11
-76 58 05 52 52 41 2E 42 84 12 30 58 40 11 82 58
-03 53 58 54 84 12 30 58 80 11 00 00 04 50 55 53
-48 00 84 12 30 58 00 12 9C 58 06 50 55 53 48 2E
-42 00 84 12 30 58 40 12 F0 57 04 43 41 4C 4C 00
-84 12 30 58 80 12 2C 40 2C 00 8A 55 84 56 D0 58
-59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90 00 15
-00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00
-03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E 43
-00 46 0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73
-58 4A AA 58 05 50 55 53 48 4D 84 12 C6 58 00 15
-14 59 04 50 4F 50 4D 00 84 12 C6 58 00 17 20 42
-FA 54 34 59 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 84 46 9C 47
-B0 41 04 4B 84 56 58 59 0A 4E 3E 4F 1A 83 2A 92
-CA 2F 8A 10 5A 06 6F 3F 90 58 04 52 52 43 4D 00
-84 12 2E 59 50 00 6A 59 04 52 52 41 4D 00 84 12
-2E 59 50 01 78 59 04 52 4C 41 4D 00 84 12 2E 59
-50 02 86 59 04 52 52 55 4D 00 84 12 2E 59 50 03
-85 12 00 3C 94 59 03 53 3E 3D 85 12 00 38 A6 59
-02 53 3C 00 85 12 00 34 22 59 03 30 3E 3D 85 12
-00 30 BA 59 02 30 3C 00 85 12 00 30 00 00 02 55
-3C 00 85 12 00 2C CE 59 03 55 3E 3D 85 12 00 28
-C4 59 03 30 3C 3E 85 12 00 24 E2 59 02 30 3D 00
-85 12 00 20 D0 44 02 49 46 00 1A 42 CC 1D 8A 4E
-00 00 A2 53 CC 1D 0E 4A 30 4D D8 59 04 54 48 45
-4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53 0A 89
-0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D A0 57
-04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C 00 00
-A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 0C 5A 05 55
-4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D 2A 83
-0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA
-89 48 00 00 A2 53 CC 1D 30 4D 24 58 05 41 47 41
-49 4E 0D 12 87 12 A0 59 54 5A 22 40 00 00 05 57
-48 49 4C 45 0D 12 87 12 FA 59 70 40 22 40 B0 59
-06 52 45 50 45 41 54 00 0D 12 87 12 A0 59 54 5A
-12 5A 22 40 B6 5A 3D 41 08 4E 3E 4F 2A 48 0A 93
-04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00 C3 3F
-BA 58 03 42 57 31 84 12 B4 5A 00 00 D2 5A 03 42
-57 32 84 12 B4 5A 00 00 DE 5A 03 42 57 33 84 12
-B4 5A 00 00 F6 5A 3D 41 1A 42 CC 1D 28 4E 08 93
-08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00 3E 4F
-30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31 84 12
-F4 5A 00 00 1A 5B 03 46 57 32 84 12 F4 5A 00 00
-26 5B 03 46 57 33 84 12 F4 5A 00 00 3E 90 00 30
-07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08
-30 4D 32 5B 04 47 4F 54 4F 00 0D 12 87 12 A0 59
-F4 4A 9E 48 22 40 00 00 05 3F 47 4F 54 4F 0D 12
-87 12 3C 5B F4 4A 9E 48 22 40 00 00 03 4A 4D 50
-0D 12 87 12 F4 4A 82 5A 22 40 68 5B 04 3F 4A 4D
-50 00 0D 12 87 12 3C 5B F4 4A 70 40 54 5A 22 40
-1A 43 25 3C D2 C3 23 02 E2 B2 60 02 02 24 30 40
-B4 51 1A 52 04 20 19 62 06 20 92 43 14 20 A2 93
-02 20 07 24 0A 5A 49 69 82 4A 16 20 C2 49 18 20
-0A 3C C2 4A 15 20 8A 10 C2 4A 16 20 C2 49 17 20
-89 10 C2 49 18 20 B0 12 28 5C 5A 53 FC 23 39 40
-05 00 D2 49 14 20 4E 06 82 93 46 06 05 24 92 B3
-6C 06 FD 27 C2 93 4C 06 59 83 F3 2F 19 83 0B 30
-F2 43 4E 06 82 93 46 06 03 24 92 B3 6C 06 FD 27
-5A 92 4C 06 F3 23 30 41 19 43 3A 43 8A 10 C2 4A
-4E 06 82 93 46 06 05 24 92 B3 6C 06 FD 27 C2 93
-4C 06 19 83 F3 23 5A 42 4C 06 30 41 1A 52 08 20
-09 43 1C D3 F2 40 51 00 19 20 B0 12 A4 5B 33 20
-B0 12 28 5C 6A 53 04 24 FB 23 D9 42 4C 06 FF 1D
-F2 43 4E 06 03 43 19 53 39 90 01 02 F6 23 F2 43
-4E 06 3C C0 03 00 D2 D3 23 02 30 41 09 43 2C D3
-F0 40 58 00 85 C3 B0 12 A4 5B 15 20 3A 40 FE FF
-29 43 B0 12 2C 5C D2 49 00 1E 4E 06 03 43 19 53
-39 90 00 02 F8 23 39 40 03 00 B0 12 2A 5C 7A C0
-E1 00 6A 92 DE 27 8C 10 1C 52 4C 06 D2 D3 23 02
-0D 12 87 12 00 46 0B 3C 20 53 44 20 45 72 72 6F
-72 21 E4 5C 2F 83 B2 40 10 00 E2 1D 0E 4C 87 12
-26 43 58 4A 92 4B 0E 00 22 20 92 4B 10 00 24 20
-5A 42 23 20 58 42 22 20 92 93 02 20 08 24 59 42
-24 20 89 10 0A 59 88 10 08 58 0A 6A 88 10 08 58
-30 41 82 43 1C 20 92 42 0E 20 1A 20 C2 93 24 20
-03 20 92 93 22 20 14 24 92 42 22 20 D0 04 92 42
-24 20 D2 04 92 42 12 20 C8 04 92 42 E4 04 1A 20
-92 42 E6 04 1C 20 92 52 10 20 1A 20 82 63 1C 20
-30 41 92 4B 0E 00 22 20 92 4B 10 00 24 20 B0 12
-22 5D 5A 4B 03 00 82 5A 1A 20 82 63 1C 20 30 41
-09 93 07 24 F8 90 20 00 00 1E 03 20 18 53 19 83
-F9 23 30 41 1B 42 32 20 82 43 1E 20 B2 90 00 02
-20 20 A3 20 BB 80 00 02 12 00 8B 73 14 00 DB 53
-03 00 DB 92 12 20 03 00 11 28 CB 43 03 00 B0 12
-F4 5C B0 12 4C 5C 8B 43 10 00 9B 48 00 1E 0E 00
-92 93 02 20 03 24 9B 48 02 1E 10 00 B2 40 00 02
-20 20 8B 93 14 00 0B 20 92 9B 12 00 1E 20 7D 2C
-BB 90 00 02 12 00 03 2C 92 4B 12 00 20 20 B0 12
-62 5D 1A 42 1A 20 19 42 1C 20 23 3F 3C 42 3B 40
-40 20 09 43 CB 93 02 00 10 24 9B 92 24 20 0C 00
-04 20 9B 92 22 20 0A 00 07 24 09 4B 3B 50 18 00
-3B 90 00 21 EF 23 0C 5C 30 41 0C 43 82 4B 32 20
-8B 49 00 00 49 93 0A 24 99 52 CA 1D 16 00 4A 93
-05 34 C9 93 02 00 02 34 5A 59 02 00 CB 4A 02 00
-CB 43 03 00 9B 42 1A 20 04 00 9B 42 1C 20 06 00
-18 42 30 20 8B 48 08 00 9B 48 1A 1E 0A 00 9B 48
-14 1E 0C 00 9B 48 1A 1E 0E 00 9B 48 14 1E 10 00
-9B 48 1C 1E 12 00 9B 48 1E 1E 14 00 82 43 1E 20
-6A 93 5F 27 C9 37 8B 43 16 00 7A 93 02 24 0A 38
-95 3F B2 40 3C 21 3C 44 B2 40 D6 43 62 44 B2 40
-02 21 00 21 18 42 00 21 B2 50 06 00 00 21 19 42
-CA 1D 1A 42 C6 1D 0A 89 88 4A 00 00 19 52 C8 1D
-88 49 02 00 88 4D 04 00 79 3F 1B 42 32 20 0B 93
-A3 27 EB 93 02 00 04 20 B0 12 74 63 B0 12 3C 63
-5A 4B 02 00 CB 43 02 00 09 4B 2B 4B 82 4B 32 20
-7A 93 07 20 B2 40 3C 1D 3C 44 B2 40 70 44 62 44
-0A 3C 0B 93 89 27 CB 93 02 00 86 37 92 4B 16 00
-1E 20 B0 12 DC 5D 21 52 2F 53 B2 80 06 00 00 21
-1A 42 00 21 3E 4A BF 4A 00 00 3D 4A 30 4D 00 51
-85 52 45 41 44 22 5A 43 19 3C A2 51 86 57 52 49
-54 45 22 00 6A 43 12 3C 68 50 84 44 45 4C 22 00
-6A 42 0C 3C 72 54 05 43 4C 4F 53 45 B0 12 EA 5E
-30 4D 84 4F 85 4C 4F 41 44 22 7A 43 2F 83 8F 4E
-00 00 0E 4A 82 93 BE 1D 0C 24 0D 12 87 12 2C 40
-2C 40 A8 48 A8 48 1E 46 3C 46 2C 40 C2 5F A8 48
-22 40 0D 12 87 12 2C 40 22 00 84 46 F0 48 C0 5F
-3D 41 35 4F 0E 55 82 4E 36 20 1C 43 92 42 2C 20
-22 20 92 42 2E 20 24 20 0E 95 8D 24 F5 90 3A 00
-01 00 01 20 25 53 F5 90 5C 00 00 00 08 20 15 53
-92 42 02 20 22 20 82 43 24 20 0E 95 70 24 82 45
-34 20 B0 12 22 5D 34 40 20 00 A2 93 02 20 04 24
-92 92 22 20 02 20 02 24 14 42 12 20 B0 12 02 5E
-2C 43 0A 43 08 4A 58 0E 08 58 82 48 30 20 C8 93
-00 1E 61 24 39 42 F8 95 00 1E 04 20 18 53 19 83
-FA 23 15 53 F5 90 2E 00 FF FF 19 24 39 50 03 00
-B0 12 80 5D 06 20 F5 90 5C 00 FF FF 29 24 0E 95
-27 28 15 42 34 20 1A 53 3A 90 10 00 DB 23 92 53
-1A 20 82 63 1C 20 14 83 D1 23 2C 42 3C 3C F5 90
-2E 00 FE FF EE 27 B0 12 80 5D EB 23 39 40 03 00
-F8 95 00 1E 04 20 18 53 19 83 FA 23 09 3C 0E 95
-E0 2F F5 90 5C 00 FF FF DC 23 B0 12 80 5D D9 23
-18 42 30 20 92 48 1A 1E 22 20 92 48 14 1E 24 20
-F8 B0 10 00 0B 1E 14 24 82 93 24 20 06 20 82 93
-22 20 03 20 92 42 02 20 22 20 0E 95 8E 2F 92 42
-22 20 2C 20 92 42 24 20 2E 20 8F 43 00 00 03 3C
-2A 4F B0 12 0C 5E 34 40 0C 40 35 40 00 40 3A 4F
-3E 4F 0A 93 05 24 7A 93 14 20 0C 93 02 20 3D 41
-30 4D 0D 12 87 12 00 46 0B 3C 20 4F 70 65 6E 45
-72 72 6F 72 56 45 74 43 F0 48 B8 45 80 45 AC 41
-E2 5C 1A 93 B6 20 0C 93 EC 23 30 4D 50 5F 04 52
-45 41 44 00 2F 83 8F 4E 00 00 1E 42 32 20 B0 12
-94 5D 1E 82 32 20 30 4D 2C 43 12 12 2A 20 18 42
-02 20 08 58 2A 41 82 9A 0A 20 A1 24 B0 12 4C 5C
-09 43 28 93 03 24 89 93 02 1E 03 20 89 93 00 1E
-07 24 09 58 39 90 00 02 F4 23 91 53 00 00 EA 3F
-0C 43 6A 41 B9 43 00 1E 28 93 0F 24 B9 40 FF 0F
-02 1E 09 11 8A 10 09 5A 5A 41 01 00 0A 11 09 10
-82 4A 28 20 82 49 26 20 07 3C 09 11 C2 49 26 20
-C2 4A 27 20 82 43 28 20 3A 41 82 4A 2A 20 30 41
-0A 12 1A 52 08 20 B0 12 8C 5C 3A 41 1A 52 0C 20
-30 40 8C 5C F2 B0 40 00 A2 04 29 20 F2 B0 10 00
-A2 04 FC 27 5A 42 B0 04 4A 11 59 42 B4 04 F2 40
-20 00 C0 04 D2 42 B1 04 C8 04 1A 52 E4 04 D2 42
-B5 04 C8 04 19 52 E4 04 D2 42 B2 04 C0 04 B2 40
-00 08 C8 04 1A 52 E4 04 92 42 B6 04 C0 04 B2 80
-BC 07 C0 04 B2 40 00 02 C8 04 19 52 E4 04 30 41
-22 2A 2B 2C 2F 3A 3B 3C 3D 3E 3F 5B 5C 5D 7C 2E
-29 92 06 38 39 80 03 00 B0 12 90 62 39 40 03 00
-7A 4B C8 4A 00 1E 82 9B 36 20 12 28 0D 12 3D 40
-0F 00 3C 40 40 62 7A 9C F3 27 1D 83 FC 23 3D 41
-6A 9C E6 27 3A 80 21 00 EB 3B 18 53 19 83 E8 23
-09 93 06 24 F8 40 20 00 00 1E 18 53 19 83 FA 23
-30 41 2A 93 EC 20 2C 93 0E 24 0C 93 BB 24 0D 12
-87 12 00 46 0C 3C 20 57 72 69 74 65 45 72 72 6F
-72 00 AC 41 24 61 B0 12 58 61 92 42 26 20 22 20
-92 42 28 20 24 20 B0 12 D0 61 B0 12 02 5E 18 42
-30 20 F8 40 20 00 0B 1E B0 12 E4 61 88 43 0C 1E
-88 4A 0E 1E 88 49 10 1E 88 49 12 1E 98 42 24 20
-14 1E 98 42 22 20 1A 1E 88 43 1C 1E 88 43 1E 1E
-1C 43 1B 42 34 20 82 9B 36 20 C9 27 FB 90 2E 00
-00 00 C5 27 39 40 0B 00 B0 12 60 62 B0 12 7E 63
-2A 43 B0 12 0C 5E 0C 93 BA 23 30 4D 1A 4B 04 00
-19 4B 06 00 B0 12 52 5C B0 12 E4 61 18 4B 08 00
-88 49 12 1E 88 4A 16 1E 88 49 18 1E 98 4B 12 00
-1C 1E 98 4B 14 00 1E 1E 1A 4B 04 00 19 4B 06 00
-30 40 8E 5C 9B 52 1E 20 12 00 8B 63 14 00 1A 42
-1A 20 19 42 1C 20 30 40 8E 5C B2 40 00 02 1E 20
-1B 42 32 20 B0 12 74 63 82 43 1E 20 DB 53 03 00
-DB 92 12 20 03 00 22 20 CB 43 03 00 B0 12 F4 5C
-08 12 0A 12 B0 12 58 61 2A 91 05 24 B0 12 D0 61
-2A 41 B0 12 4C 5C 3A 41 38 41 98 42 26 20 00 1E
-92 93 02 20 03 24 98 42 28 20 02 1E B0 12 D0 61
-9B 42 26 20 0E 00 9B 42 28 20 10 00 30 40 62 5D
-5C 5F 05 57 52 49 54 45 B0 12 8A 63 30 4D 3E 61
-07 53 44 5F 45 4D 49 54 B2 90 00 02 1E 20 02 28
-B0 12 8A 63 18 42 1E 20 C8 4E 00 1E 92 53 1E 20
-3E 4F 30 4D 58 4B 13 00 59 4B 14 00 89 10 09 58
-58 4B 15 00 5B 42 12 20 0A 43 3C 42 08 11 09 10
-4A 10 1C 83 0B 11 FA 2B 0A 11 1C 83 FD 37 1B 42
-32 20 19 5B 0A 00 18 6B 0C 00 8B 49 0E 00 8B 48
-10 00 CB 4A 03 00 1A 4B 12 00 BB C0 FF 01 12 00
-3A F0 FF 01 82 4A 1E 20 B0 12 FE 5D 30 4D 0C 93
-38 20 38 90 E0 01 03 2C C8 93 20 1E 02 24 7C 40
-E5 00 C8 4C 00 1E B0 12 7E 63 B0 12 00 5D 82 4A
-2A 20 0B 4A B0 12 4C 5C 1A 48 00 1E 88 43 00 1E
-92 93 02 20 09 24 19 48 02 1E 88 43 02 1E 39 F0
-FF 0F 39 90 FF 0F 02 20 3A 93 0E 24 82 4A 22 20
-82 49 24 20 B0 12 00 5D 0B 9A E6 27 0A 12 0A 4B
-B0 12 D0 61 3A 41 DD 3F 0A 4B B0 12 D0 61 B0 12
-EA 5E 30 4D 98 4E 08 54 45 52 4D 32 53 44 22 00
-0D 12 87 12 70 5F 2C 40 02 00 74 43 F0 48 C2 5F
-12 65 3D 41 92 C3 DC 05 08 43 B0 12 A4 44 92 B3
-DC 05 FD 27 59 42 CC 05 69 92 0D 24 C8 49 00 1E
-18 53 38 90 FF 01 F3 2B 03 24 B0 12 8A 63 EC 3F
-B0 12 B6 44 EC 3F B0 12 B6 44 82 48 1E 20 B0 12
-EA 5E 3D 41 30 4D D6 4D 0A 7B 53 44 5F 54 4F 4F
-4C 53 7D 00 30 4D 00 64 06 53 45 43 54 4F 52 00
-09 4E 2A 4F B0 12 52 5C 0D 12 87 12 42 42 D4 42
-F0 42 B8 45 80 45 2C 40 00 1E 2C 40 00 02 6E 67
-22 40 76 5F 07 43 4C 55 53 54 45 52 82 4E 24 20
-A2 4F 22 20 B0 12 22 5D 9F 42 1A 20 00 00 1E 42
-1C 20 DE 3F FC 4F 03 46 41 54 2F 82 8F 4E 02 00
-9F 42 08 20 00 00 0E 43 D3 3F 6A 5F 03 44 49 52
-2F 82 8F 4E 02 00 92 42 2C 20 22 20 92 42 2E 20
-24 20 E0 3F 58 65 07 7B 54 4F 4F 4C 53 7D 30 4D
-A0 54 03 41 4E 44 3E FF 30 4D 5A 50 02 2E 53 00
-8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C
-2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12
-87 12 2C 40 3C 00 4A 45 5E 43 2C 40 08 00 4A 45
-2C 40 3E 00 4A 45 80 45 82 40 82 40 8E 41 BA 41
-48 66 5A 40 5A 40 22 40 C0 41 F8 41 EA 40 26 43
-2C 40 02 00 D0 41 4A 66 22 40 FC 65 03 2E 52 53
-8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 47
-01 3F 2E 4E 30 40 26 43 E6 50 03 50 41 44 85 12
-E4 1C F2 63 05 57 4F 52 44 53 0D 12 87 12 FC 45
-2C 40 03 00 96 45 2C 40 D0 1D EA 40 7E 66 2C 40
-10 00 3C 40 18 41 8A 4F 2C 40 00 00 3C 40 2C 40
-10 00 3C 40 18 41 2C 40 00 00 C0 41 3C 40 F8 41
-7E 66 18 41 EA 40 A4 41 B0 41 DA 66 5A 40 5A 40
-F8 41 3C 40 7E 66 18 41 EA 40 2C 40 02 00 D0 41
-BC 66 4C 40 B0 41 1C 67 3C 40 2C 40 02 00 20 41
-EA 40 92 40 7E 66 18 41 F2 40 3C 40 F0 48 2C 40
-7F 00 F6 65 B8 45 00 41 2C 40 0F 00 F6 65 2C 40
-10 00 70 40 20 41 96 45 AC 41 A8 66 5A 40 22 40
-84 5F 03 4D 41 58 2E 9F 07 38 2F 53 30 4D 22 67
-03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D F6 64 03 55
-2E 52 0D 12 87 12 A8 40 42 42 2C 40 00 00 A2 42
-D4 42 F0 42 B4 40 82 40 20 41 2C 40 00 00 26 67
-96 45 B8 45 22 40 CC 65 04 44 55 4D 50 00 0D 12
-12 12 E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 40
-82 40 82 40 26 43 2C 40 01 00 20 41 26 43 2C 40
-FE FF F6 65 C0 41 FC 45 F8 41 2C 40 07 00 42 67
-80 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41 F8 41
-00 41 2C 40 03 00 42 67 E2 41 AE 67 80 45 80 45
-F8 41 2C 40 10 00 18 41 F8 41 C0 41 F8 41 00 41
-2C 40 7E 00 34 67 20 42 26 67 4A 45 E2 41 CC 67
-2C 40 10 00 D0 41 96 67 B4 40 2C 42 F2 40 22 40
+3E 4F 3D 41 30 4D 30 50 09 50 57 52 5F 53 54 41
+54 45 84 12 6C 50 30 54 A4 67 C8 4E 09 52 53 54
+5F 53 54 41 54 45 92 42 0E 18 B6 50 92 42 0C 18
+B8 50 EF 3F A8 50 08 50 57 52 5F 48 45 52 45 00
+92 42 C8 1D B6 50 92 42 C6 1D B8 50 30 4D BC 50
+08 52 53 54 5F 48 45 52 45 00 92 42 C8 1D 0E 18
+92 42 C6 1D 0C 18 EC 3F AC 4F 04 57 49 50 45 00
+39 40 10 00 29 83 B9 43 80 FF FC 23 B0 12 D2 49
+B2 40 A4 67 0C 18 B2 40 30 54 0E 18 CC 3F 0A 51
+04 57 41 52 4D 00 30 40 3A 51 1E 42 08 18 0D 12
+87 12 D0 45 06 0D 1B 5B 37 6D 23 00 90 45 5E 43
+D0 45 1F 46 61 73 74 46 6F 72 74 68 20 56 32 30
+36 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E
+73 20 90 45 2C 40 30 FF 74 43 20 41 26 43 D0 45
+0B 62 79 74 65 73 20 66 72 65 65 20 36 4A 7C 4E
+04 43 4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A
+5C 01 B2 D0 03 00 04 02 B2 40 FC FF 02 02 B2 C0
+03 00 06 02 B2 D0 00 04 24 02 B2 D3 26 02 B2 43
+22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02 B2 D3
+66 02 F2 43 26 03 F2 D3 22 03 F2 40 A5 00 41 01
+F2 40 10 00 40 01 D2 43 41 01 F2 40 A5 00 61 01
+B2 40 48 00 62 01 82 43 66 01 39 40 00 01 B2 40
+33 00 64 01 D2 43 61 01 92 D2 9E 01 08 18 A2 93
+08 18 01 24 59 07 38 40 59 14 18 83 FE 23 19 83
+FA 23 B2 42 B0 01 F2 D0 10 00 2A 03 F2 40 A5 00
+A1 04 F2 C0 40 00 A2 04 39 40 4C 00 29 83 B9 40
+9C 51 B4 FF FB 23 B2 40 C0 44 F0 FF B2 40 18 00
+0A 18 39 40 00 10 29 83 89 43 00 1C FC 23 31 40
+E0 1C 3F 40 80 1C 37 40 22 40 36 40 B4 40 35 40
+00 40 34 40 0C 40 B2 40 0A 00 DC 1D B2 43 B4 1D
+92 C3 30 01 18 42 08 18 D2 B3 01 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 C0 05 92 42 02 18
+C6 05 92 42 04 18 C8 05 F2 D0 03 00 0D 02 92 C3
+C0 05 92 D3 DA 05 3D 40 CC 52 38 90 0A 00 28 27
+38 90 16 00 25 2F 28 93 FE 22 F3 26 CE 52 E2 B2
+60 02 31 23 B2 40 81 A9 40 06 B2 40 30 00 46 06
+D2 D3 25 02 B2 D0 C0 04 0C 02 92 C3 40 06 39 42
+B0 12 DE 5B D2 C3 23 02 2C 42 B2 40 95 00 14 20
+B2 40 00 40 18 20 B0 12 54 5B 02 24 30 40 7A 5C
+B0 12 DC 5B 7A 93 FC 23 B2 40 87 AA 14 20 92 43
+16 20 B2 40 00 48 18 20 B0 12 54 5B 29 42 B0 12
+DE 5B 92 43 14 20 82 43 16 20 78 43 3C 42 B2 40
+00 77 18 20 B0 12 54 5B B2 40 40 69 18 20 B0 12
+9A 5B 03 24 58 83 F3 23 D9 3F 0C 5C A2 43 16 20
+B2 40 00 50 18 20 B0 12 9A 5B D0 23 92 D3 40 06
+82 43 46 06 92 C3 40 06 B0 12 04 5C 38 40 00 1E
+92 48 C6 01 04 20 92 48 C8 01 06 20 5A 48 C2 01
+92 43 02 20 7A 80 06 00 0D 24 7A 82 0B 24 A2 43
+02 20 6A 53 07 24 5A 53 05 24 3A 50 0B 20 0C 4A
+30 40 80 5C B0 12 04 5C D2 48 0D 00 12 20 19 48
+0E 00 82 49 08 20 1A 48 16 00 0A 93 02 20 1A 48
+24 00 82 4A 0A 20 09 5A 82 49 0C 20 09 5A A2 93
+02 20 04 24 82 49 0E 20 39 50 20 00 19 82 12 20
+19 82 12 20 82 49 10 20 92 42 02 20 2C 20 9B 3E
+1A 50 09 41 53 53 45 4D 42 4C 45 52 84 12 E2 4F
+30 5A 9E 5A E4 59 08 5B AA 59 30 5B C4 56 00 00
+A0 59 54 5A 02 5A 42 5A D4 57 00 00 00 00 40 5B
+16 50 2C 4E 85 48 49 32 4C 4F 0D 12 87 12 74 43
+44 4E 78 48 DE 4A 20 50 0C 54 22 40 90 51 04 43
+4F 44 45 00 B0 12 0A 4C A2 82 C6 1D 0D 12 87 12
+FC 4B AC 41 46 54 00 00 07 45 4E 44 43 4F 44 45
+0D 12 87 12 3A 50 92 4B 22 40 02 54 03 41 53 4D
+92 42 DA 1D E0 1D B2 40 10 54 DA 1D E3 3F 68 54
+06 45 4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F
+00 00 05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12
+00 00 BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D
+30 40 3A 50 00 00 05 4C 4F 32 48 49 A2 83 C6 1D
+1A 42 C6 1D EE 3F 4E 54 07 43 4F 44 45 4E 4E 4D
+0D 12 87 12 D4 4B DE 4A EA 54 3D 41 2A 82 82 4A
+C6 1D B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52
+C4 1D 09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88
+82 4A C4 1D 30 4D 1C 15 87 12 54 46 B2 46 BA 41
+2A 55 6C 47 B0 41 CC 4A 4C 55 2C 55 29 4E 39 90
+86 12 02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E
+02 00 04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41
+3E 40 28 00 B0 12 16 55 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53
+C4 1D 87 12 54 46 6C 47 B0 41 88 55 7E 55 21 53
+3E 90 10 00 84 2D E2 2B 8A 55 B2 41 C4 1D DE 3F
+0D 12 87 12 20 42 F4 54 9A 55 0C 43 1B 42 C6 1D
+A2 53 C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20
+92 53 C4 1D B0 12 16 55 0E 93 03 20 3C 40 00 03
+21 3C 1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20
+3C 40 20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C
+3E 92 03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40
+30 03 08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D
+89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00
+07 20 3C 40 10 02 92 53 C4 1D B0 12 16 55 EC 3F
+FA 90 40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D
+B0 12 68 55 0C 20 3C 50 10 00 3E 40 2B 00 B0 12
+68 55 92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10
+0C 5E D8 3F B0 12 68 55 FA 23 3C 50 10 00 B0 12
+50 55 EF 3F 0D 12 87 12 20 42 F4 54 6E 56 FE 90
+26 00 00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F
+B0 12 68 55 E5 23 3C 50 80 00 B0 12 50 55 E0 3F
+B0 44 04 52 45 54 49 00 0D 12 87 12 2C 40 00 13
+78 48 22 40 2C 40 2C 00 90 55 64 56 AE 56 2E 4E
+0E DC 09 4B A5 3F C6 54 03 4D 4F 56 84 12 A4 56
+00 40 B8 56 05 4D 4F 56 2E 42 84 12 A4 56 40 40
+00 00 03 41 44 44 84 12 A4 56 00 50 D2 56 05 41
+44 44 2E 42 84 12 A4 56 40 50 DE 56 04 41 44 44
+43 00 84 12 A4 56 00 60 EC 56 06 41 44 44 43 2E
+42 00 84 12 A4 56 40 60 92 56 04 53 55 42 43 00
+84 12 A4 56 00 70 0A 57 06 53 55 42 43 2E 42 00
+84 12 A4 56 40 70 18 57 03 53 55 42 84 12 A4 56
+00 80 28 57 05 53 55 42 2E 42 84 12 A4 56 40 80
+A2 54 03 43 4D 50 84 12 A4 56 00 90 42 57 05 43
+4D 50 2E 42 84 12 A4 56 40 90 90 54 04 44 41 44
+44 00 84 12 A4 56 00 A0 5C 57 06 44 41 44 44 2E
+42 00 84 12 A4 56 40 A0 4E 57 03 42 49 54 84 12
+A4 56 00 B0 7A 57 05 42 49 54 2E 42 84 12 A4 56
+40 B0 86 57 03 42 49 43 84 12 A4 56 00 C0 94 57
+05 42 49 43 2E 42 84 12 A4 56 40 C0 A0 57 03 42
+49 53 84 12 A4 56 00 D0 AE 57 05 42 49 53 2E 42
+84 12 A4 56 40 D0 00 00 03 58 4F 52 84 12 A4 56
+00 E0 C8 57 05 58 4F 52 2E 42 84 12 A4 56 40 E0
+FA 56 03 41 4E 44 84 12 A4 56 00 F0 E2 57 05 41
+4E 44 2E 42 84 12 A4 56 40 F0 20 42 90 55 00 58
+0A 4C 3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F
+34 57 03 52 52 43 84 12 FA 57 00 10 12 58 05 52
+52 43 2E 42 84 12 FA 57 40 10 1E 58 04 53 57 50
+42 00 84 12 FA 57 80 10 2C 58 03 52 52 41 84 12
+FA 57 00 11 3A 58 05 52 52 41 2E 42 84 12 FA 57
+40 11 46 58 03 53 58 54 84 12 FA 57 80 11 00 00
+04 50 55 53 48 00 84 12 FA 57 00 12 60 58 06 50
+55 53 48 2E 42 00 84 12 FA 57 40 12 BA 57 04 43
+41 4C 4C 00 84 12 FA 57 80 12 1A 53 0E 4A 0D 12
+87 12 5E 43 D0 45 0D 6F 75 74 20 6F 66 20 62 6F
+75 6E 64 73 20 4A 20 42 F4 54 AC 58 0C 43 1B 42
+C6 1D A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15
+87 12 54 46 6C 47 B0 41 CC 4A CC 58 1B 17 87 12
+64 56 D4 58 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E
+0A 28 08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00
+CC 2F 5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F
+54 58 04 52 52 43 4D 00 84 12 A6 58 50 00 02 59
+04 52 52 41 4D 00 84 12 A6 58 50 01 10 59 04 52
+4C 41 4D 00 84 12 A6 58 50 02 1E 59 04 52 52 55
+4D 00 84 12 A6 58 50 03 6E 58 05 50 55 53 48 4D
+84 12 A6 58 00 15 3A 59 04 50 4F 50 4D 00 84 12
+A6 58 00 17 85 12 00 3C 2C 59 03 53 3E 3D 85 12
+00 38 5A 59 02 53 3C 00 85 12 00 34 48 59 03 30
+3E 3D 85 12 00 30 6E 59 02 30 3C 00 85 12 00 30
+00 00 02 55 3C 00 85 12 00 2C 82 59 03 55 3E 3D
+85 12 00 28 78 59 03 30 3C 3E 85 12 00 24 96 59
+02 30 3D 00 85 12 00 20 00 00 02 49 46 00 1A 42
+C6 1D 8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D 8C 59
+04 54 48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48
+29 53 0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00
+30 4D 6A 57 04 45 4C 53 45 00 1A 42 C6 1D BA 40
+00 3C 00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F
+C0 59 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42
+C6 1D 2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0
+FF 03 08 DA 89 48 00 00 A2 53 C6 1D 30 4D EE 57
+05 41 47 41 49 4E 0D 12 87 12 54 59 08 5A 22 40
+00 00 05 57 48 49 4C 45 0D 12 87 12 AE 59 70 40
+22 40 64 59 06 52 45 50 45 41 54 00 0D 12 87 12
+54 59 08 5A C6 59 22 40 6A 5A 3D 41 2E 4E 08 4E
+3E 4F 2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D
+00 00 30 4D 7E 58 03 42 57 31 84 12 68 5A E2 1D
+86 5A 03 42 57 32 84 12 68 5A E4 1D 92 5A 03 42
+57 33 84 12 68 5A E6 1D AA 5A 3D 41 1A 42 C6 1D
+2E 4E 28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00
+A2 53 C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46
+57 31 84 12 A8 5A E8 1D CE 5A 03 46 57 32 84 12
+A8 5A EA 1D DA 5A 03 46 57 33 84 12 A8 5A EC 1D
+3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24
+3E E0 00 08 30 4D E6 5A 04 47 4F 54 4F 00 0D 12
+87 12 54 59 BC 4A 6E 48 22 40 00 00 05 3F 47 4F
+54 4F 0D 12 87 12 F0 5A BC 4A 6E 48 22 40 00 00
+03 4A 4D 50 0D 12 87 12 BC 4A 36 5A 22 40 1C 5B
+04 3F 4A 4D 50 00 0D 12 87 12 F0 5A BC 4A 70 40
+08 5A 22 40 1A 43 25 3C D2 C3 23 02 E2 B2 60 02
+02 24 30 40 96 51 1A 52 04 20 19 62 06 20 92 43
+14 20 A2 93 02 20 07 24 0A 5A 49 69 82 4A 16 20
+C2 49 18 20 0A 3C C2 4A 15 20 8A 10 C2 4A 16 20
+C2 49 17 20 89 10 C2 49 18 20 B0 12 DC 5B 5A 53
+FC 23 39 40 05 00 D2 49 14 20 4E 06 82 93 46 06
+05 24 92 B3 6C 06 FD 27 C2 93 4C 06 59 83 F3 2F
+19 83 0B 30 F2 43 4E 06 82 93 46 06 03 24 92 B3
+6C 06 FD 27 5A 92 4C 06 F3 23 30 41 19 43 3A 43
+8A 10 C2 4A 4E 06 82 93 46 06 05 24 92 B3 6C 06
+FD 27 C2 93 4C 06 19 83 F3 23 5A 42 4C 06 30 41
+1A 52 08 20 09 43 1C D3 F2 40 51 00 19 20 B0 12
+58 5B 33 20 B0 12 DC 5B 6A 53 04 24 FB 23 D9 42
+4C 06 FF 1D F2 43 4E 06 03 43 19 53 39 90 01 02
+F6 23 F2 43 4E 06 3C C0 03 00 D2 D3 23 02 30 41
+09 43 2C D3 F0 40 58 00 D1 C3 B0 12 58 5B 15 20
+3A 40 FE FF 29 43 B0 12 E0 5B D2 49 00 1E 4E 06
+03 43 19 53 39 90 00 02 F8 23 39 40 03 00 B0 12
+DE 5B 7A C0 E1 00 6A 92 DE 27 8C 10 1C 52 4C 06
+D2 D3 23 02 0D 12 87 12 D0 45 0B 3C 20 53 44 20
+45 72 72 6F 72 21 98 5C 2F 83 B2 40 10 00 DC 1D
+0E 4C 87 12 26 43 20 4A 92 4B 0E 00 22 20 92 4B
+10 00 24 20 5A 42 23 20 58 42 22 20 92 93 02 20
+08 24 59 42 24 20 89 10 0A 59 88 10 08 58 0A 6A
+88 10 08 58 30 41 82 43 1C 20 92 42 0E 20 1A 20
+C2 93 24 20 03 20 92 93 22 20 14 24 92 42 22 20
+D0 04 92 42 24 20 D2 04 92 42 12 20 C8 04 92 42
+E4 04 1A 20 92 42 E6 04 1C 20 92 52 10 20 1A 20
+82 63 1C 20 30 41 92 4B 0E 00 22 20 92 4B 10 00
+24 20 B0 12 D6 5C 5A 4B 03 00 82 5A 1A 20 82 63
+1C 20 30 41 09 93 07 24 F8 90 20 00 00 1E 03 20
+18 53 19 83 F9 23 30 41 1B 42 32 20 82 43 1E 20
+B2 90 00 02 20 20 A3 20 BB 80 00 02 12 00 8B 73
+14 00 DB 53 03 00 DB 92 12 20 03 00 11 28 CB 43
+03 00 B0 12 A8 5C B0 12 00 5C 8B 43 10 00 9B 48
+00 1E 0E 00 92 93 02 20 03 24 9B 48 02 1E 10 00
+B2 40 00 02 20 20 8B 93 14 00 0B 20 92 9B 12 00
+1E 20 7D 2C BB 90 00 02 12 00 03 2C 92 4B 12 00
+20 20 B0 12 16 5D 1A 42 1A 20 19 42 1C 20 23 3F
+3C 42 3B 40 40 20 09 43 CB 93 02 00 10 24 9B 92
+24 20 0C 00 04 20 9B 92 22 20 0A 00 07 24 09 4B
+3B 50 18 00 3B 90 00 21 EF 23 0C 5C 30 41 0C 43
+82 4B 32 20 8B 49 00 00 49 93 0A 24 99 52 C4 1D
+16 00 4A 93 05 34 C9 93 02 00 02 34 5A 59 02 00
+CB 4A 02 00 CB 43 03 00 9B 42 1A 20 04 00 9B 42
+1C 20 06 00 18 42 30 20 8B 48 08 00 9B 48 1A 1E
+0A 00 9B 48 14 1E 0C 00 9B 48 1A 1E 0E 00 9B 48
+14 1E 10 00 9B 48 1C 1E 12 00 9B 48 1E 1E 14 00
+82 43 1E 20 6A 93 5F 27 C9 37 8B 43 16 00 7A 93
+02 24 0A 38 95 3F B2 40 3C 21 34 44 B2 40 CE 43
+5A 44 B2 40 02 21 00 21 18 42 00 21 B2 50 06 00
+00 21 19 42 C4 1D 1A 42 C0 1D 0A 89 88 4A 00 00
+19 52 C2 1D 88 49 02 00 88 4D 04 00 79 3F 1B 42
+32 20 0B 93 A3 27 EB 93 02 00 04 20 B0 12 28 63
+B0 12 F0 62 5A 4B 02 00 CB 43 02 00 09 4B 2B 4B
+82 4B 32 20 7A 93 07 20 B2 40 3C 1D 34 44 B2 40
+5C 44 5A 44 0A 3C 0B 93 89 27 CB 93 02 00 86 37
+92 4B 16 00 1E 20 B0 12 90 5D 21 52 2F 53 B2 80
+06 00 00 21 1A 42 00 21 3E 4A BF 4A 00 00 3D 4A
+30 4D F0 50 85 52 45 41 44 22 5A 43 19 3C 30 51
+86 57 52 49 54 45 22 00 6A 43 12 3C 58 50 84 44
+45 4C 22 00 6A 42 0C 3C D8 54 05 43 4C 4F 53 45
+B0 12 9E 5E 30 4D 74 4F 85 4C 4F 41 44 22 7A 43
+2F 83 8F 4E 00 00 0E 4A 82 93 BE 1D 0C 24 0D 12
+87 12 2C 40 2C 40 78 48 78 48 EE 45 0C 46 2C 40
+76 5F 78 48 22 40 0D 12 87 12 2C 40 22 00 54 46
+C0 48 74 5F 3D 41 35 4F 0E 55 82 4E 36 20 1C 43
+92 42 2C 20 22 20 92 42 2E 20 24 20 0E 95 8D 24
+F5 90 3A 00 01 00 01 20 25 53 F5 90 5C 00 00 00
+08 20 15 53 92 42 02 20 22 20 82 43 24 20 0E 95
+70 24 82 45 34 20 B0 12 D6 5C 34 40 20 00 A2 93
+02 20 04 24 92 92 22 20 02 20 02 24 14 42 12 20
+B0 12 B6 5D 2C 43 0A 43 08 4A 58 0E 08 58 82 48
+30 20 C8 93 00 1E 61 24 39 42 F8 95 00 1E 04 20
+18 53 19 83 FA 23 15 53 F5 90 2E 00 FF FF 19 24
+39 50 03 00 B0 12 34 5D 06 20 F5 90 5C 00 FF FF
+29 24 0E 95 27 28 15 42 34 20 1A 53 3A 90 10 00
+DB 23 92 53 1A 20 82 63 1C 20 14 83 D1 23 2C 42
+3C 3C F5 90 2E 00 FE FF EE 27 B0 12 34 5D EB 23
+39 40 03 00 F8 95 00 1E 04 20 18 53 19 83 FA 23
+09 3C 0E 95 E0 2F F5 90 5C 00 FF FF DC 23 B0 12
+34 5D D9 23 18 42 30 20 92 48 1A 1E 22 20 92 48
+14 1E 24 20 F8 B0 10 00 0B 1E 14 24 82 93 24 20
+06 20 82 93 22 20 03 20 92 42 02 20 22 20 0E 95
+8E 2F 92 42 22 20 2C 20 92 42 24 20 2E 20 8F 43
+00 00 03 3C 2A 4F B0 12 C0 5D 34 40 0C 40 35 40
+00 40 3A 4F 3E 4F 0A 93 05 24 7A 93 14 20 0C 93
+02 20 3D 41 30 4D 0D 12 87 12 D0 45 0B 3C 20 4F
+70 65 6E 45 72 72 6F 72 2E 45 74 43 C0 48 90 45
+58 45 AC 41 96 5C 1A 93 B6 20 0C 93 EC 23 30 4D
+04 5F 04 52 45 41 44 00 2F 83 8F 4E 00 00 1E 42
+32 20 B0 12 48 5D 1E 82 32 20 30 4D 2C 43 12 12
+2A 20 18 42 02 20 08 58 2A 41 82 9A 0A 20 A1 24
+B0 12 00 5C 09 43 28 93 03 24 89 93 02 1E 03 20
+89 93 00 1E 07 24 09 58 39 90 00 02 F4 23 91 53
+00 00 EA 3F 0C 43 6A 41 B9 43 00 1E 28 93 0F 24
+B9 40 FF 0F 02 1E 09 11 8A 10 09 5A 5A 41 01 00
+0A 11 09 10 82 4A 28 20 82 49 26 20 07 3C 09 11
+C2 49 26 20 C2 4A 27 20 82 43 28 20 3A 41 82 4A
+2A 20 30 41 0A 12 1A 52 08 20 B0 12 40 5C 3A 41
+1A 52 0C 20 30 40 40 5C F2 B0 40 00 A2 04 29 20
+F2 B0 10 00 A2 04 FC 27 5A 42 B0 04 4A 11 59 42
+B4 04 F2 40 20 00 C0 04 D2 42 B1 04 C8 04 1A 52
+E4 04 D2 42 B5 04 C8 04 19 52 E4 04 D2 42 B2 04
+C0 04 B2 40 00 08 C8 04 1A 52 E4 04 92 42 B6 04
+C0 04 B2 80 BC 07 C0 04 B2 40 00 02 C8 04 19 52
+E4 04 30 41 22 2A 2B 2C 2F 3A 3B 3C 3D 3E 3F 5B
+5C 5D 7C 2E 29 92 06 38 39 80 03 00 B0 12 44 62
+39 40 03 00 7A 4B C8 4A 00 1E 82 9B 36 20 12 28
+0D 12 3D 40 0F 00 3C 40 F4 61 7A 9C F3 27 1D 83
+FC 23 3D 41 6A 9C E6 27 3A 80 21 00 EB 3B 18 53
+19 83 E8 23 09 93 06 24 F8 40 20 00 00 1E 18 53
+19 83 FA 23 30 41 2A 93 EC 20 2C 93 0E 24 0C 93
+BB 24 0D 12 87 12 D0 45 0C 3C 20 57 72 69 74 65
+45 72 72 6F 72 00 AC 41 D8 60 B0 12 0C 61 92 42
+26 20 22 20 92 42 28 20 24 20 B0 12 84 61 B0 12
+B6 5D 18 42 30 20 F8 40 20 00 0B 1E B0 12 98 61
+88 43 0C 1E 88 4A 0E 1E 88 49 10 1E 88 49 12 1E
+98 42 24 20 14 1E 98 42 22 20 1A 1E 88 43 1C 1E
+88 43 1E 1E 1C 43 1B 42 34 20 82 9B 36 20 C9 27
+FB 90 2E 00 00 00 C5 27 39 40 0B 00 B0 12 14 62
+B0 12 32 63 2A 43 B0 12 C0 5D 0C 93 BA 23 30 4D
+1A 4B 04 00 19 4B 06 00 B0 12 06 5C B0 12 98 61
+18 4B 08 00 88 49 12 1E 88 4A 16 1E 88 49 18 1E
+98 4B 12 00 1C 1E 98 4B 14 00 1E 1E 1A 4B 04 00
+19 4B 06 00 30 40 42 5C 9B 52 1E 20 12 00 8B 63
+14 00 1A 42 1A 20 19 42 1C 20 30 40 42 5C B2 40
+00 02 1E 20 1B 42 32 20 B0 12 28 63 82 43 1E 20
+DB 53 03 00 DB 92 12 20 03 00 22 20 CB 43 03 00
+B0 12 A8 5C 08 12 0A 12 B0 12 0C 61 2A 91 05 24
+B0 12 84 61 2A 41 B0 12 00 5C 3A 41 38 41 98 42
+26 20 00 1E 92 93 02 20 03 24 98 42 28 20 02 1E
+B0 12 84 61 9B 42 26 20 0E 00 9B 42 28 20 10 00
+30 40 16 5D 10 5F 05 57 52 49 54 45 B0 12 3E 63
+30 4D F2 60 07 53 44 5F 45 4D 49 54 B2 90 00 02
+1E 20 02 28 B0 12 3E 63 18 42 1E 20 C8 4E 00 1E
+92 53 1E 20 3E 4F 30 4D 58 4B 13 00 59 4B 14 00
+89 10 09 58 58 4B 15 00 5B 42 12 20 0A 43 3C 42
+08 11 09 10 4A 10 1C 83 0B 11 FA 2B 0A 11 1C 83
+FD 37 1B 42 32 20 19 5B 0A 00 18 6B 0C 00 8B 49
+0E 00 8B 48 10 00 CB 4A 03 00 1A 4B 12 00 BB C0
+FF 01 12 00 3A F0 FF 01 82 4A 1E 20 B0 12 B2 5D
+30 4D 0C 93 38 20 38 90 E0 01 03 2C C8 93 20 1E
+02 24 7C 40 E5 00 C8 4C 00 1E B0 12 32 63 B0 12
+B4 5C 82 4A 2A 20 0B 4A B0 12 00 5C 1A 48 00 1E
+88 43 00 1E 92 93 02 20 09 24 19 48 02 1E 88 43
+02 1E 39 F0 FF 0F 39 90 FF 0F 02 20 3A 93 0E 24
+82 4A 22 20 82 49 24 20 B0 12 B4 5C 0B 9A E6 27
+0A 12 0A 4B B0 12 84 61 3A 41 DD 3F 0A 4B B0 12
+84 61 B0 12 9E 5E 30 4D 88 4E 08 54 45 52 4D 32
+53 44 22 00 0D 12 87 12 24 5F 2C 40 02 00 74 43
+C0 48 76 5F C6 64 3D 41 92 C3 DC 05 08 43 B0 12
+90 44 92 B3 DC 05 FD 27 59 42 CC 05 69 92 0D 24
+C8 49 00 1E 18 53 38 90 FF 01 F3 2B 03 24 B0 12
+3E 63 EC 3F B0 12 A2 44 EC 3F B0 12 A2 44 82 48
+1E 20 B0 12 9E 5E 3D 41 30 4D C8 4D 0A 7B 53 44
+5F 54 4F 4F 4C 53 7D 00 30 4D B4 63 06 53 45 43
+54 4F 52 00 09 4E 2A 4F B0 12 06 5C 0D 12 87 12
+42 42 D4 42 F0 42 90 45 58 45 2C 40 00 1E 2C 40
+00 02 22 67 22 40 2A 5F 07 43 4C 55 53 54 45 52
+82 4E 24 20 A2 4F 22 20 B0 12 D6 5C 9F 42 1A 20
+00 00 1E 42 1C 20 DE 3F EC 4F 03 46 41 54 2F 82
+8F 4E 02 00 9F 42 08 20 00 00 0E 43 D3 3F 1E 5F
+03 44 49 52 2F 82 8F 4E 02 00 92 42 2C 20 22 20
+92 42 2E 20 24 20 E0 3F 0C 65 07 7B 54 4F 4F 4C
+53 7D 30 4D 7C 54 03 41 4E 44 3E FF 30 4D 4A 50
+02 2E 53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF
+3E 40 80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F
+0E 11 0D 12 87 12 2C 40 3C 00 1C 45 5E 43 2C 40
+08 00 1C 45 2C 40 3E 00 1C 45 58 45 82 40 82 40
+8E 41 BA 41 FC 65 5A 40 5A 40 22 40 C0 41 F8 41
+EA 40 26 43 2C 40 02 00 D0 41 FE 65 22 40 B0 65
+03 2E 52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C
+D2 3F CA 4C 01 3F 2E 4E 30 40 26 43 D6 50 03 50
+41 44 85 12 E4 1C A6 63 05 57 4F 52 44 53 0D 12
+87 12 BE 45 2C 40 03 00 6E 45 2C 40 CA 1D EA 40
+32 66 2C 40 10 00 3C 40 18 41 7A 4F 2C 40 00 00
+3C 40 2C 40 10 00 3C 40 18 41 2C 40 00 00 C0 41
+3C 40 F8 41 32 66 18 41 EA 40 A4 41 B0 41 8E 66
+5A 40 5A 40 F8 41 3C 40 32 66 18 41 EA 40 2C 40
+02 00 D0 41 70 66 4C 40 B0 41 D0 66 3C 40 2C 40
+02 00 20 41 EA 40 92 40 32 66 18 41 F2 40 3C 40
+C0 48 2C 40 7F 00 AA 65 90 45 00 41 2C 40 0F 00
+AA 65 2C 40 10 00 70 40 20 41 6E 45 AC 41 5C 66
+5A 40 22 40 38 5F 03 4D 41 58 2E 9F 07 38 2F 53
+30 4D D6 66 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D
+AA 64 03 55 2E 52 0D 12 87 12 A8 40 42 42 2C 40
+00 00 A2 42 D4 42 F0 42 B4 40 82 40 20 41 2C 40
+00 00 DA 66 6E 45 90 45 22 40 80 65 04 44 55 4D
+50 00 0D 12 12 12 DC 1D B2 40 10 00 DC 1D 2E 5F
+87 12 70 40 82 40 82 40 26 43 2C 40 01 00 20 41
+26 43 2C 40 FE FF AA 65 C0 41 BE 45 F8 41 2C 40
+07 00 F6 66 58 45 F8 41 2C 40 10 00 18 41 F8 41
+C0 41 F8 41 00 41 2C 40 03 00 F6 66 E2 41 62 67
+58 45 58 45 F8 41 2C 40 10 00 18 41 F8 41 C0 41
+F8 41 00 41 2C 40 7E 00 E8 66 20 42 DA 66 1C 45
+E2 41 80 67 2C 40 10 00 D0 41 4A 67 B4 40 2C 42
+F2 40 22 40
 @FFFE
-BA 51
+9C 51
 q
index 6918eb6..78199cb 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 48 80 3E 80 04 05 00 18 00 EC 5F 94 56
-2C 48 3E 48 00 00 00 00
+10 00 08 00 A1 F7 80 3E 05 00 18 00 AE 5F 7E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,402 +55,398 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 40 49 08 49 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 40 49 08 49 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-EC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 FC 05
-FD 27 1E 42 EC 05 B0 12 3E 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 A4 48 3B 40 6E 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 48 92 B3 FC 05 05 24 18 42 EC 05 38 90
-0A 00 04 20 21 53 39 40 52 48 4D 15 A2 B3 FC 05
-FD 27 B2 40 11 00 EE 05 D2 C3 22 02 30 41 B2 40
-13 00 EE 05 D2 D3 22 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 48 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 EC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 FC 05
-FD 27 82 48 EE 05 30 4D 9A 48 2D 83 92 B3 FC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 47 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 47 04 45 4D 49
-54 00 30 40 C4 48 CC 48 04 45 43 48 4F 00 B2 40
-82 48 92 48 82 43 E4 1D 30 4D 5C 47 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 48 92 43 E4 1D 30 4D
-0E 47 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 49 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 49 EF 3F 2C 49 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 47 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 49 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 49 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 48 04 28 43 52 29 00
-0D 12 87 12 88 49 02 0D 0A 00 40 49 22 44 92 47
-02 43 52 00 30 40 70 49 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 49 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E 49 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 49
-82 53 22 00 0D 12 87 12 2C 44 88 49 30 4C B8 49
-2C 44 22 00 0C 4A A6 49 DA 49 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC 48 82 2E 22 00 0D 12 87 12 C4 49 2C 44 40 49
-30 4C 22 44 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 44 34 40 0C 44 30 4D 8C 45 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 4B 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 4B 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 48 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E 4C 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C 44 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 49 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 4C 20 46 0C 4A
-A2 4C 3D 40 AA 4C E1 22 44 3E AC 4C 0A 4E 3E 4F
-3D 40 C2 4C 37 27 3D 40 9C 4C 1A E2 BE 1D B8 27
-B2 23 C4 4C 3E 4F 3D 40 9C 4C BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 4F CC 3F
-1E 4C 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 4C FE 4C B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 45
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 49 05 0D 0A 6F
-6B 20 40 49 D6 47 08 49 96 4C D6 44 68 45 88 49
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 4D
-2C 44 30 FF 74 47 A4 45 88 49 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 4D 38 46 EA 44 B0 45 2A 4D
-88 49 05 0D 0A 20 20 20 AC 45 32 4D F0 47 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 54 16 55
-B2 40 60 48 54 48 B2 40 C4 48 D4 48 B2 40 70 49
-86 49 B2 40 AE 47 D4 47 82 43 1A 5D 82 43 26 5D
-82 43 32 5D 82 43 62 5D 82 43 6E 5D 82 43 7A 5D
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 48 B0 12 96 4D A2 B3
-FC 05 FD 27 B2 40 11 00 EE 05 D2 C3 22 02 92 C3
-FC 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 FC 05 F3 23 0D 12 87 12 88 49 04 1B
-5B 37 6D 00 40 49 2C 44 E4 1D EA 44 4C 44 B0 45
-32 4E 88 49 05 6C 69 6E 65 3A 40 49 38 45 26 47
-DE 48 40 49 88 49 04 1B 5B 30 6D 00 40 49 2E 54
-A6 49 84 4D 7E 4D 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 49 2C 44 C8 4D 30 4C 22 44 64 4A 01 27
-0D 12 87 12 20 46 0C 4A 6A 4A B0 45 70 4E 22 44
-CC 4C 3E 46 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 4E 01 5D B2 43 BE 1D
-30 4D 80 4E 83 5B 27 5D 0D 12 87 12 60 4E 2C 44
-2C 44 30 4C 30 4C 22 44 BE 4F 02 00 3E 4F 30 4D
-6A 49 82 49 53 00 0D 12 87 12 38 46 EA 44 B0 45
-CC 4E 98 4E 2C 44 A8 4E 30 4C 22 44 60 4E A8 4E
-22 44 B2 4E 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 49 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 4D 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 46 0C 4A 6A 4A 4C 44 B0 45 70 4E
-68 45 B0 45 32 4F 2C 44 2C 44 30 4C 30 4C 2C 44
-30 4C 30 4C 22 44 82 9F BC 1D 2C 25 0D 12 87 12
-88 49 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 4D 94 4E 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C 44 22 44 30 4C 36 4F 82 4E 22 44 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 4F 01 3A 30 12 6E 4F 0D 12 87 12
-E6 49 20 46 0C 4A 98 4F 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 4A 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 4F BA 40 86 12 FC FF DF 3C 72 4C
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 4F BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 4F 06 43
-52 45 41 54 45 00 B0 12 8C 4F BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 4C 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 50 05 44 45 46 45 52 B0 12 8C 4F BA 40 30 40
-FC FF BA 40 2E 50 FE FF A9 3C FE 4F 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 4F 86 5B
-54 48 45 4E 5D 00 30 4D 7E 50 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 44 01 00 20 46 0C 4A 78 4C
-3C 44 B0 45 FE 50 82 44 82 44 88 49 04 5B 49 46
-5D 00 54 50 BA 45 C0 50 62 49 2E 45 AC 45 F6 50
-82 44 82 44 88 49 06 5B 45 4C 53 45 5D 00 54 50
-BA 45 E4 50 62 49 38 45 3C 44 B0 45 F6 50 2E 45
-AC 45 F6 50 88 49 06 5B 54 48 45 4E 5D 00 54 50
-BA 45 F6 50 38 45 4C 44 BA 45 9A 50 22 44 62 49
-88 49 05 0D 0A 6B 6F 20 40 49 D6 47 86 4C AC 45
-9A 50 8A 50 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 51 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 0C 4A 6A 4A 64 44 5C 45 22 44
-24 51 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 46 0C 4A 6A 4A 64 44 22 44 5C 51 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 4C 06 4D 41 52
-4B 45 52 00 B0 12 8C 4F BA 40 84 12 FC FF BA 40
-5A 51 FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 4E 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 45 00 00
-2E 53 30 4D 32 50 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 49 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C 50 85 42 45 47 49 4E 30 40
-74 47 E6 51 85 55 4E 54 49 4C 39 40 B0 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 4E 85 41 47 41 49 4E 39 40 AC 45 EF 3F
-C8 4F 85 57 48 49 4C 45 0D 12 87 12 AC 51 70 44
-22 44 EC 4E 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 52 EC 51 22 44 C6 51 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 45 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C 51
-84 4C 4F 4F 50 00 39 40 E2 45 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 47 85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F
-80 52 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 45
-00 00 BA 40 AC 45 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 52
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 52 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 50 2C 44 10 00 2C 44
-00 00 C0 45 2C 44 00 00 30 4C E2 45 44 53 74 47
-2C 44 CE 1D 3C 44 EA 44 30 4C F2 44 1E 50 2C 44
-D0 1D F2 44 22 44 5E 4E 05 46 4F 52 54 48 84 12
-5E 53 EE 5D B2 56 64 5F 68 53 98 56 B4 52 2C 5F
-58 5E 76 5E 6C 54 3A 5F 80 5E 00 00 E2 5D 8A 4E
-6C 5E 00 00 24 52 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 4F 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 49 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 52 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E 53 CC 53 E0 53 F0 53
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 53 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 53 94 56 EC 5F 44 52 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 54 92 42 0C 18 34 54 EF 3F
-24 54 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 54 92 42 CC 1D 34 54 30 4D 38 54 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 53 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 C6 FF FA 23 B0 12 8A 4D
-B2 40 EC 5F 0C 18 B2 40 94 56 0E 18 CA 3F A8 51
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 49 06 0D 1B 5B 37 6D 23 00 40 49 5E 47 88 49
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 49 2C 44 30 FF 74 47 20 45 26 47 88 49 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 4D 86 54 04 57
-41 52 4D 00 30 40 B8 54 F8 51 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A 5C 01 92 43 04 02
-B2 40 FE FF 02 02 A2 83 06 02 92 D3 24 02 B2 D3
-26 02 B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43
-62 02 B2 D3 66 02 B2 40 80 00 84 02 B2 40 7F FF
-82 02 B2 D0 7F FF 86 02 F2 43 22 03 F2 D3 26 03
-F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01
-F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43 66 01
-39 40 00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
-9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
-18 83 FE 23 19 83 FA 23 B2 42 B0 01 F2 D0 10 00
-2A 03 F2 C0 40 00 A2 04 3A 40 26 55 39 40 C6 FF
-89 4A 00 00 29 53 FC 23 92 42 02 18 E4 FF B2 40
-18 00 0A 18 39 40 00 1C 89 43 00 00 29 53 39 90
-FF 23 FA 2B 31 40 E0 1C 3F 40 80 1C 37 40 22 44
-36 40 B4 44 35 40 00 44 34 40 0C 44 B2 40 0A 00
-E2 1D B2 43 B4 1D 92 C3 30 01 18 42 08 18 F2 B0
-10 00 20 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 E0 05 B2 42 E6 05 B2 40 A1 F7 E8 05 F2 D0
-30 00 2A 02 92 C3 E0 05 92 D3 FA 05 3D 40 62 56
-38 90 0A 00 1B 27 38 90 16 00 18 2F 28 93 F1 22
-E6 26 14 55 96 53 09 41 53 53 45 4D 42 4C 45 52
-84 12 5E 53 BC 5C 2A 5D 70 5C 94 5D 36 5C BC 5D
-3A 59 00 00 2C 5C E0 5C 8E 5C CE 5C 4A 5A 00 00
-00 00 CC 5D 92 53 B0 54 85 48 49 32 4C 4F 0D 12
-87 12 74 47 C0 51 30 4C 82 4E 9C 53 70 56 22 44
-1A 55 04 43 4F 44 45 00 B0 12 8C 4F A2 82 CC 1D
-0D 12 87 12 7E 4F AC 45 AA 56 00 00 07 45 4E 44
-43 4F 44 45 0D 12 87 12 B6 53 36 4F 22 44 66 56
-03 41 53 4D 92 42 E0 1D C0 1D B2 40 74 56 E0 1D
-E3 3F CC 56 06 45 4E 44 41 53 4D 00 92 42 C0 1D
-E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42 CC 1D
-BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52 CC 1D
-B2 43 BE 1D 30 40 B6 53 00 00 05 4C 4F 32 48 49
-A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D 39 48
-2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A FC 27
-1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12 0C 4A
-6A 4A BA 45 6E 57 24 4B B0 45 70 4E 90 57 70 57
-29 4E 39 90 86 12 02 20 2E 53 30 41 39 90 85 12
-03 20 1E 4E 02 00 30 41 39 90 84 12 01 20 2E 52
-30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00 3E 40
-29 00 12 12 CA 1D 92 53 CA 1D 87 12 0C 4A 24 4B
-B0 45 C0 57 B6 57 21 53 3E 90 10 00 BE 2D 30 41
-C2 57 B2 41 CA 1D 22 D3 30 41 0D 12 87 12 20 46
-3A 57 D4 57 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20 92 53
-CA 1D B0 12 5C 57 0E 93 04 20 B2 40 00 03 C4 1D
-27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C 2E 93
-04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20 B2 40
-20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02 C4 1D
-0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C B2 40
-30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20 B2 40
-10 02 C4 1D 92 53 CA 1D B0 12 5C 57 EB 3F FA 90
-40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53 CA 1D
-B0 12 A2 57 0E 20 B2 50 10 00 C4 1D 3E 40 2B 00
-B0 12 A2 57 33 24 92 92 C6 1D CA 1D 02 24 92 53
-CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 A2 57 F9 23
-B2 50 10 00 C4 1D 3E 40 28 00 B0 12 5C 57 B0 12
-92 57 E8 3F 0D 12 87 12 20 46 3A 57 CE 58 FE 90
-26 00 00 00 3E 40 20 00 04 20 B2 50 82 00 C4 1D
-C1 3F B0 12 A2 57 DE 23 B2 50 80 00 C4 1D 3E 40
-28 00 B0 12 5C 57 B0 12 92 57 D4 23 3D 40 70 4E
-30 4D 4C 48 04 52 45 54 49 00 0D 12 87 12 2C 44
-00 13 30 4C 22 44 2C 44 2C 00 CA 57 C4 58 20 59
-2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F 2A 57 03 4D
-4F 56 84 12 16 59 00 40 2E 59 05 4D 4F 56 2E 42
-84 12 16 59 40 40 00 00 03 41 44 44 84 12 16 59
-00 50 48 59 05 41 44 44 2E 42 84 12 16 59 40 50
-54 59 04 41 44 44 43 00 84 12 16 59 00 60 62 59
-06 41 44 44 43 2E 42 00 84 12 16 59 40 60 04 59
-04 53 55 42 43 00 84 12 16 59 00 70 80 59 06 53
-55 42 43 2E 42 00 84 12 16 59 40 70 8E 59 03 53
-55 42 84 12 16 59 00 80 9E 59 05 53 55 42 2E 42
-84 12 16 59 40 80 06 57 03 43 4D 50 84 12 16 59
-00 90 B8 59 05 43 4D 50 2E 42 84 12 16 59 40 90
-F4 56 04 44 41 44 44 00 84 12 16 59 00 A0 D2 59
-06 44 41 44 44 2E 42 00 84 12 16 59 40 A0 C4 59
-03 42 49 54 84 12 16 59 00 B0 F0 59 05 42 49 54
-2E 42 84 12 16 59 40 B0 FC 59 03 42 49 43 84 12
-16 59 00 C0 0A 5A 05 42 49 43 2E 42 84 12 16 59
-40 C0 16 5A 03 42 49 53 84 12 16 59 00 D0 24 5A
-05 42 49 53 2E 42 84 12 16 59 40 D0 00 00 03 58
-4F 52 84 12 16 59 00 E0 3E 5A 05 58 4F 52 2E 42
-84 12 16 59 40 E0 70 59 03 41 4E 44 84 12 16 59
-00 F0 58 5A 05 41 4E 44 2E 42 84 12 16 59 40 F0
-20 46 CA 57 76 5A 1A 42 C4 1D B2 F0 70 00 C4 1D
-8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F AA 59 03 52
-52 43 84 12 70 5A 00 10 8E 5A 05 52 52 43 2E 42
-84 12 70 5A 40 10 9A 5A 04 53 57 50 42 00 84 12
-70 5A 80 10 A8 5A 03 52 52 41 84 12 70 5A 00 11
-B6 5A 05 52 52 41 2E 42 84 12 70 5A 40 11 C2 5A
-03 53 58 54 84 12 70 5A 80 11 00 00 04 50 55 53
-48 00 84 12 70 5A 00 12 DC 5A 06 50 55 53 48 2E
-42 00 84 12 70 5A 40 12 30 5A 04 43 41 4C 4C 00
-84 12 70 5A 80 12 2C 44 2C 00 CA 57 C4 58 10 5B
-59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90 00 15
-00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90 10 00
-03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12 5E 47
-88 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E 64 73
-D4 4D EA 5A 05 50 55 53 48 4D 84 12 06 5B 00 15
-54 5B 04 50 4F 50 4D 00 84 12 06 5B 00 17 20 46
-3A 57 74 5B 82 43 C4 1D 92 42 CC 1D C2 1D A2 53
-CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 0C 4A 24 4B
-B0 45 70 4E C4 58 98 5B 0A 4E 3E 4F 1A 83 2A 92
-CA 2F 8A 10 5A 06 6F 3F D0 5A 04 52 52 43 4D 00
-84 12 6E 5B 50 00 AA 5B 04 52 52 41 4D 00 84 12
-6E 5B 50 01 B8 5B 04 52 4C 41 4D 00 84 12 6E 5B
-50 02 C6 5B 04 52 52 55 4D 00 84 12 6E 5B 50 03
-85 12 00 3C D4 5B 03 53 3E 3D 85 12 00 38 E6 5B
-02 53 3C 00 85 12 00 34 62 5B 03 30 3E 3D 85 12
-00 30 FA 5B 02 30 3C 00 85 12 00 30 00 00 02 55
-3C 00 85 12 00 2C 0E 5C 03 55 3E 3D 85 12 00 28
-04 5C 03 30 3C 3E 85 12 00 24 22 5C 02 30 3D 00
-85 12 00 20 58 48 02 49 46 00 1A 42 CC 1D 8A 4E
-00 00 A2 53 CC 1D 0E 4A 30 4D 18 5C 04 54 48 45
-4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53 0A 89
-0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D E0 59
-04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C 00 00
-A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 4C 5C 05 55
-4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D 2A 83
-0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03 08 DA
-89 48 00 00 A2 53 CC 1D 30 4D 64 5A 05 41 47 41
-49 4E 0D 12 87 12 E0 5B 94 5C 22 44 00 00 05 57
-48 49 4C 45 0D 12 87 12 3A 5C 70 44 22 44 F0 5B
-06 52 45 50 45 41 54 00 0D 12 87 12 E0 5B 94 5C
-52 5C 22 44 F6 5C 3D 41 08 4E 3E 4F 2A 48 0A 93
-04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00 C3 3F
-FA 5A 03 42 57 31 84 12 F4 5C 00 00 12 5D 03 42
-57 32 84 12 F4 5C 00 00 1E 5D 03 42 57 33 84 12
-F4 5C 00 00 36 5D 3D 41 1A 42 CC 1D 28 4E 08 93
-08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00 3E 4F
-30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31 84 12
-34 5D 00 00 5A 5D 03 46 57 32 84 12 34 5D 00 00
-66 5D 03 46 57 33 84 12 34 5D 00 00 3E 90 00 30
-07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0 00 08
-30 4D 72 5D 04 47 4F 54 4F 00 0D 12 87 12 E0 5B
-60 4E 26 4C 22 44 00 00 05 3F 47 4F 54 4F 0D 12
-87 12 7C 5D 60 4E 26 4C 22 44 00 00 03 4A 4D 50
-0D 12 87 12 60 4E C2 5C 22 44 A8 5D 04 3F 4A 4D
-50 00 0D 12 87 12 7C 5D 60 4E 70 44 94 5C 22 44
-42 51 07 7B 54 4F 4F 4C 53 7D 30 4D E0 56 03 41
-4E 44 3E FF 30 4D C6 53 02 2E 53 00 8F 4E FE FF
-0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83 8F 4E
-FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12 2C 44
-3C 00 D2 48 5E 47 2C 44 08 00 D2 48 2C 44 3E 00
-D2 48 08 49 82 44 82 44 8E 45 BA 45 44 5E 5A 44
-5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44 02 00
-D0 45 46 5E 22 44 F8 5D 03 2E 52 53 8F 4E FE FF
-8F 41 FA FF 3E 40 E0 1C D2 3F CA 4A 01 3F 2E 4E
-30 40 26 47 52 54 03 50 41 44 85 12 E4 1C 0E 55
-05 57 4F 52 44 53 0D 12 87 12 84 49 2C 44 03 00
-1E 49 2C 44 D0 1D EA 44 7A 5E 2C 44 10 00 3C 44
-18 45 F6 52 2C 44 00 00 3C 44 2C 44 10 00 3C 44
-18 45 2C 44 00 00 C0 45 3C 44 F8 45 7A 5E 18 45
-EA 44 A4 45 B0 45 D6 5E 5A 44 5A 44 F8 45 3C 44
-7A 5E 18 45 EA 44 2C 44 02 00 D0 45 B8 5E 4C 44
-B0 45 18 5F 3C 44 2C 44 02 00 20 45 EA 44 92 44
-7A 5E 18 45 F2 44 3C 44 78 4C 2C 44 7F 00 F2 5D
-40 49 00 45 2C 44 0F 00 F2 5D 2C 44 10 00 70 44
-20 45 1E 49 AC 45 A4 5E 5A 44 22 44 F0 52 03 4D
-41 58 2E 9F 07 38 2F 53 30 4D 1E 5F 03 4D 49 4E
-2E 9F F9 3B 3E 4F 30 4D 04 52 03 55 2E 52 0D 12
-87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46 F0 46
-B4 44 82 44 20 45 2C 44 00 00 22 5F 1E 49 40 49
-22 44 D4 53 04 44 55 4D 50 00 0D 12 12 12 E2 1D
-B2 40 10 00 E2 1D 2E 5F 87 12 70 44 82 44 82 44
-26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF F2 5D
-C0 45 84 49 F8 45 2C 44 07 00 3E 5F 08 49 F8 45
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 EC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+FC 05 FD 27 1E 42 EC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 FC 05
+05 24 18 42 EC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 FC 05 FD 27 B2 40 11 00 EE 05
+D2 C3 22 02 30 41 B2 40 13 00 EE 05 D2 D3 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 EC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 FC 05 FD 27
+82 48 EE 05 30 4D 88 48 2D 83 92 B3 FC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 FC 05 FD 27 B2 40 11 00 EE 05 D2 C3
+22 02 92 C3 FC 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 FC 05 F3 23 0D 12 87 12
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 B0 5D
+26 57 26 5F 64 53 82 56 B0 52 EE 5E 1A 5E 38 5E
+68 54 FC 5E 42 5E 00 00 A4 5D 5E 4E 2E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 7E 56
+AE 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 AE 5F 0C 18 B2 40
+7E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 43 04 02 B2 40
+FE FF 02 02 A2 83 06 02 92 D3 24 02 B2 D3 26 02
+B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02
+B2 D3 66 02 B2 40 80 00 84 02 B2 40 7F FF 82 02
+B2 D0 7F FF 86 02 F2 43 22 03 F2 D3 26 03 F2 40
+A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01 F2 40
+A5 00 61 01 B2 40 48 00 62 01 82 43 66 01 39 40
+00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 42 B0 01 F2 D0 10 00 2A 03
+F2 C0 40 00 A2 04 39 40 3A 00 29 83 B9 40 14 55
+C6 FF FB 23 B2 40 54 48 E4 FF B2 40 18 00 0A 18
+39 40 00 08 29 83 89 43 00 1C FC 23 31 40 E0 1C
+3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40 00 44
+34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D 92 C3
+30 01 18 42 08 18 F2 B0 10 00 20 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 E0 05 92 42 02 18
+E6 05 92 42 04 18 E8 05 F2 D0 30 00 2A 02 92 C3
+E0 05 92 D3 FA 05 3D 40 4C 56 38 90 0A 00 24 27
+38 90 16 00 21 2F 28 93 FA 22 EF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 7E 5C
+EC 5C 32 5C 56 5D F8 5B 7E 5D 12 59 00 00 EE 5B
+A2 5C 50 5C 90 5C 22 5A 00 00 00 00 8E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 5A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 94 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 50 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 5E 56 DA 1D E3 3F B6 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 9C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 38 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 78 57
+00 4B B0 45 44 4E 9A 57 7A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 64 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 D6 57 CC 57 21 53 3E 90
+10 00 84 2D E2 2B D8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 42 57 E8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 64 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 64 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+B6 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 B6 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 B6 57 FA 23 3C 50 10 00 B0 12 9E 57
+EF 3F 0D 12 87 12 20 46 42 57 BC 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+B6 57 E5 23 3C 50 80 00 B0 12 9E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 DE 57 B2 58 FC 58 2E 4E 0E DC
+09 4B A5 3F 14 57 03 4D 4F 56 84 12 F2 58 00 40
+06 59 05 4D 4F 56 2E 42 84 12 F2 58 40 40 00 00
+03 41 44 44 84 12 F2 58 00 50 20 59 05 41 44 44
+2E 42 84 12 F2 58 40 50 2C 59 04 41 44 44 43 00
+84 12 F2 58 00 60 3A 59 06 41 44 44 43 2E 42 00
+84 12 F2 58 40 60 E0 58 04 53 55 42 43 00 84 12
+F2 58 00 70 58 59 06 53 55 42 43 2E 42 00 84 12
+F2 58 40 70 66 59 03 53 55 42 84 12 F2 58 00 80
+76 59 05 53 55 42 2E 42 84 12 F2 58 40 80 F0 56
+03 43 4D 50 84 12 F2 58 00 90 90 59 05 43 4D 50
+2E 42 84 12 F2 58 40 90 DE 56 04 44 41 44 44 00
+84 12 F2 58 00 A0 AA 59 06 44 41 44 44 2E 42 00
+84 12 F2 58 40 A0 9C 59 03 42 49 54 84 12 F2 58
+00 B0 C8 59 05 42 49 54 2E 42 84 12 F2 58 40 B0
+D4 59 03 42 49 43 84 12 F2 58 00 C0 E2 59 05 42
+49 43 2E 42 84 12 F2 58 40 C0 EE 59 03 42 49 53
+84 12 F2 58 00 D0 FC 59 05 42 49 53 2E 42 84 12
+F2 58 40 D0 00 00 03 58 4F 52 84 12 F2 58 00 E0
+16 5A 05 58 4F 52 2E 42 84 12 F2 58 40 E0 48 59
+03 41 4E 44 84 12 F2 58 00 F0 30 5A 05 41 4E 44
+2E 42 84 12 F2 58 40 F0 20 46 DE 57 4E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 82 59
+03 52 52 43 84 12 48 5A 00 10 60 5A 05 52 52 43
+2E 42 84 12 48 5A 40 10 6C 5A 04 53 57 50 42 00
+84 12 48 5A 80 10 7A 5A 03 52 52 41 84 12 48 5A
+00 11 88 5A 05 52 52 41 2E 42 84 12 48 5A 40 11
+94 5A 03 53 58 54 84 12 48 5A 80 11 00 00 04 50
+55 53 48 00 84 12 48 5A 00 12 AE 5A 06 50 55 53
+48 2E 42 00 84 12 48 5A 40 12 08 5A 04 43 41 4C
+4C 00 84 12 48 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 42 57 FA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E 1A 5B 1B 17 87 12 B2 58
+22 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F A2 5A
+04 52 52 43 4D 00 84 12 F4 5A 50 00 50 5B 04 52
+52 41 4D 00 84 12 F4 5A 50 01 5E 5B 04 52 4C 41
+4D 00 84 12 F4 5A 50 02 6C 5B 04 52 52 55 4D 00
+84 12 F4 5A 50 03 BC 5A 05 50 55 53 48 4D 84 12
+F4 5A 00 15 88 5B 04 50 4F 50 4D 00 84 12 F4 5A
+00 17 85 12 00 3C 7A 5B 03 53 3E 3D 85 12 00 38
+A8 5B 02 53 3C 00 85 12 00 34 96 5B 03 30 3E 3D
+85 12 00 30 BC 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C D0 5B 03 55 3E 3D 85 12
+00 28 C6 5B 03 30 3C 3E 85 12 00 24 E4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D DA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+B8 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F 0E 5C
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 3C 5A 05 41
+47 41 49 4E 0D 12 87 12 A2 5B 56 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 FC 5B 70 44 22 44
+B2 5B 06 52 45 50 45 41 54 00 0D 12 87 12 A2 5B
+56 5C 14 5C 22 44 B8 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D CC 5A 03 42 57 31 84 12 B6 5C E2 1D D4 5C
+03 42 57 32 84 12 B6 5C E4 1D E0 5C 03 42 57 33
+84 12 B6 5C E6 1D F8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 F6 5C E8 1D 1C 5D 03 46 57 32 84 12 F6 5C
+EA 1D 28 5D 03 46 57 33 84 12 F6 5C EC 1D 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D 34 5D 04 47 4F 54 4F 00 0D 12 87 12
+A2 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 3E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 84 5C 22 44 6A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 3E 5D 34 4E 70 44 56 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D CA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 06 5E
+5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
+02 00 D0 45 08 5E 22 44 BA 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 3C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 3C 5E
+18 45 EA 44 A4 45 B0 45 98 5E 5A 44 5A 44 F8 45
+3C 44 3C 5E 18 45 EA 44 2C 44 02 00 D0 45 7A 5E
+4C 44 B0 45 DA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 3C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+B4 5D 24 49 00 45 2C 44 0F 00 B4 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 66 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D E0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
+0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
+F0 46 B4 44 82 44 20 45 2C 44 00 00 E4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
+82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
+B4 5D C0 45 52 49 F8 45 2C 44 07 00 00 5F EC 48
+F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
+2C 44 03 00 00 5F E2 45 6C 5F EC 48 EC 48 F8 45
 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
-03 00 3E 5F E2 45 AA 5F 08 49 08 49 F8 45 2C 44
-10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44 7E 00
-30 5F 20 46 22 5F D2 48 E2 45 C8 5F 2C 44 10 00
-D0 45 92 5F B4 44 2C 46 F2 44 22 44
+7E 00 F2 5E 20 46 E4 5E B0 48 E2 45 8A 5F 2C 44
+10 00 D0 45 54 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-26 55
+14 55
 q
index 4427159..7191c1c 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 60 48 80 3E 50 C3 05 00 18 00 E2 5F 8A 56
-2C 48 38 48 00 00 00 00
+10 00 03 00 00 21 80 3E 05 00 18 00 AE 5F 7E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,402 +55,398 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 34 49 FC 48 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 34 49 FC 48 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-EC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 FC 05
-FD 27 1E 42 EC 05 B0 12 38 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 98 48 3B 40 68 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 8C 48 92 B3 FC 05 05 24 18 42 EC 05 38 90
-0A 00 04 20 21 53 39 40 4C 48 4D 15 B2 40 11 00
-EE 05 D2 C3 22 02 30 41 B2 40 13 00 EE 05 D2 D3
-22 02 30 41 00 00 05 53 4C 45 45 50 30 40 5A 48
-00 00 07 28 53 4C 45 45 50 29 12 D2 0A 18 F6 3F
-21 52 3A 17 58 42 EC 05 48 9C 08 2C 48 9B E4 27
-78 92 0E 20 2E 9F 0C 24 1E 83 05 3C 0E 9A 03 24
-CE 48 00 00 1E 53 82 48 EE 05 30 4D 8E 48 2D 83
-92 B3 FC 05 E7 23 FC 27 B2 40 18 00 0A 18 82 93
-E4 1D 02 24 92 53 E4 1D 3E 8F 3D 41 30 4D A8 47
-06 28 45 4D 49 54 29 00 08 4E 3E 4F E4 3F 3C 47
-04 45 4D 49 54 00 30 40 B8 48 C0 48 04 45 43 48
-4F 00 B2 40 82 48 86 48 82 43 E4 1D 30 4D 5C 47
-06 4E 4F 45 43 48 4F 00 B2 40 30 4D 86 48 92 43
-E4 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
-00 00 3E 40 20 00 DF 3F F6 48 06 53 50 41 43 45
-53 00 0E 93 09 24 0D 12 3D 40 1E 49 EF 3F 20 49
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 EC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+FC 05 FD 27 1E 42 EC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 FC 05
+05 24 18 42 EC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 FC 05 FD 27 B2 40 11 00 EE 05
+D2 C3 22 02 30 41 B2 40 13 00 EE 05 D2 D3 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 EC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 FC 05 FD 27
+82 48 EE 05 30 4D 88 48 2D 83 92 B3 FC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
 2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
-59 50 45 00 0E 93 0F 24 1E 15 3D 40 4A 49 28 4F
-7E 48 8F 48 00 00 2F 83 BE 3F 4C 49 2D 83 91 83
-02 00 F5 23 1D 17 2F 53 3E 4F 30 4D B0 48 04 28
-43 52 29 00 0D 12 87 12 7C 49 02 0D 0A 00 34 49
-22 44 92 47 02 43 52 00 30 40 64 49 2F 82 8F 4E
-02 00 7E 4D 8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D
-74 49 07 43 41 50 53 5F 4F 4E B2 43 B4 1D 30 4D
-92 49 08 43 41 50 53 5F 4F 46 46 00 82 43 B4 1D
-30 4D 0A 49 82 53 22 00 0D 12 87 12 2C 44 7C 49
-24 4C AC 49 2C 44 22 00 00 4A 9A 49 CE 49 3D 41
-6E 4E 1E 83 82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63
-CC 1D 30 4D E0 48 82 2E 22 00 0D 12 87 12 B8 49
-2C 44 34 49 24 4C 22 44 00 00 04 57 4F 52 44 00
-3C 40 C6 1D 39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A
-1C 24 7E 9A FC 27 1A 83 3B 40 60 00 C8 4C 00 00
-09 9A 0F 24 7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F
-82 93 B4 1D F3 27 7C 90 7B 00 F0 2F 7C 80 20 00
-ED 3F 1A 82 C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E
-CE 48 00 00 30 4D 00 00 04 46 49 4E 44 00 2F 83
-0C 4E 65 4C 74 40 80 00 3B 40 D0 1D 3E 4B 0E 93
-1E 24 58 4C 01 00 78 F0 1E 00 0E 58 2E 53 1E 4E
-FE FF 0E 93 F3 27 09 4E 78 49 48 C4 48 95 F7 23
-0A 4C 1A 53 FA 99 00 00 F2 23 58 83 FA 23 19 B3
-09 63 0C 49 6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C
-00 00 35 40 00 44 34 40 0C 44 30 4D 8C 45 07 3E
-4E 55 4D 42 45 52 3C 4F 38 4F 29 4F 2F 82 1B 42
-E2 1D 6A 4C 7A 80 30 00 7A 90 0A 00 05 28 7A 80
-07 00 7A 90 0A 00 13 28 0A 9B 11 2C 82 49 D0 04
-82 48 D2 04 82 4B C8 04 19 42 E4 04 18 42 E6 04
-09 5A 08 63 1C 53 1E 83 E4 23 8F 48 02 00 8F 4C
-00 00 8F 49 04 00 30 4D 0C 43 1B 42 E2 1D 32 C0
-00 02 2D 15 09 43 08 43 3D 40 68 4B 3F 82 8F 4E
-06 00 0C 4E 7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83
-2B 43 7A 52 07 24 3B 52 6A 53 04 24 3B 40 10 00
-5A 83 BF 23 1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93
-B8 23 B1 43 02 00 CE 3F 6A 4B 0E 93 32 24 32 B0
-00 02 2F 20 32 D0 00 02 FC 90 2E 00 00 00 02 20
-2D 83 C0 3F FC 90 2C 00 00 00 23 20 0A 4E 09 43
-8F 49 02 00 5A 83 09 4A 09 5C 69 49 39 80 30 00
-79 90 0A 00 05 28 79 80 07 00 79 90 0A 00 0A 28
-09 9B 08 2C 8F 49 00 00 0E 4B 2C 15 B0 12 58 46
-2A 17 E6 3F 9F 4F 04 00 02 00 AF 4F 04 00 0E 4A
-4E 93 2B 17 0E 4C 82 4B E2 1D 04 24 3F 50 06 00
-0E F3 30 4D 2F 53 9F 4F 02 00 04 00 BF 4F 00 00
-3E E3 09 20 3E E3 BF E3 02 00 BF E3 00 00 9F 53
-02 00 8F 63 00 00 32 B0 00 02 01 20 2F 53 30 4D
-CC 48 07 45 58 45 43 55 54 45 0A 4E 3E 4F 00 4A
-1E 45 01 2C 1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00
-3E 4F 30 4D 22 4C 87 4C 49 54 45 52 41 4C 82 93
-BE 1D 0F 24 1A 42 CC 1D A2 52 CC 1D BA 40 2C 44
-00 00 8A 4E 02 00 3E 4F 32 B0 00 02 32 C0 00 02
-F1 23 30 4D A2 49 05 43 4F 55 4E 54 2F 83 1E 53
-8F 4E 00 00 5E 4E FF FF 30 4D 82 43 CA 1D 82 4E
-C6 1D B2 4F C8 1D 3E 4F 30 4D 0D 12 87 12 7A 4C
-20 46 00 4A 96 4C 3D 40 9E 4C E1 22 44 3E A0 4C
-0A 4E 3E 4F 3D 40 B6 4C 37 27 3D 40 90 4C 1A E2
-BE 1D B8 27 B2 23 B8 4C 3E 4F 3D 40 90 4C BF 23
-DE 53 00 00 68 4E 08 5E F8 40 3F 00 00 00 3D 40
-46 4F CC 3F 12 4C 08 45 56 41 4C 55 41 54 45 00
-39 40 C6 1D 3C 49 3B 49 3A 49 3D 15 87 12 8A 4C
-F2 4C B2 41 CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41
-30 4D 94 45 04 51 55 49 54 00 31 40 E0 1C B2 40
-00 1C 00 1C 82 43 BE 1D 82 43 08 18 87 12 7C 49
-05 0D 0A 6F 6B 20 34 49 D6 47 FC 48 8A 4C D6 44
-68 45 7C 49 0D 73 74 61 63 6B 20 65 6D 70 74 79
-21 20 BC 4D 2C 44 30 FF 74 47 A4 45 7C 49 0B 46
-52 41 4D 20 66 75 6C 6C 21 20 BC 4D 38 46 EA 44
-B0 45 1E 4D 7C 49 05 0D 0A 20 20 20 AC 45 26 4D
-F0 47 05 41 42 4F 52 54 3F 40 80 1C C6 3F B2 40
-AC 54 0A 55 B2 40 5A 48 4E 48 B2 40 B8 48 C8 48
-B2 40 64 49 7A 49 B2 40 AE 47 D4 47 82 43 10 5D
-82 43 1C 5D 82 43 28 5D 82 43 58 5D 82 43 64 5D
-82 43 70 5D B2 40 0A 00 E2 1D 30 41 8F 93 02 00
-03 20 2F 52 3E 4F 30 4D B2 40 82 48 86 48 B0 12
-8A 4D A2 B3 FC 05 FD 27 B2 40 11 00 EE 05 D2 C3
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 FC 05 FD 27 B2 40 11 00 EE 05 D2 C3
 22 02 92 C3 FC 05 38 40 A0 AA 39 42 03 43 19 83
 FD 23 18 83 FA 23 92 B3 FC 05 F3 23 0D 12 87 12
-7C 49 04 1B 5B 37 6D 00 34 49 2C 44 E4 1D EA 44
-4C 44 B0 45 26 4E 7C 49 05 6C 69 6E 65 3A 34 49
-38 45 26 47 D2 48 34 49 7C 49 04 1B 5B 30 6D 00
-34 49 22 54 9A 49 78 4D 72 4D 86 41 42 4F 52 54
-22 00 0D 12 87 12 B8 49 2C 44 BC 4D 24 4C 22 44
-58 4A 01 27 0D 12 87 12 20 46 00 4A 5E 4A B0 45
-64 4E 22 44 C0 4C 3E 46 81 5C 92 42 C6 1D CA 1D
-30 4D 00 00 81 5B 82 43 BE 1D 30 4D 68 4E 01 5D
-B2 43 BE 1D 30 4D 74 4E 83 5B 27 5D 0D 12 87 12
-54 4E 2C 44 2C 44 24 4C 24 4C 22 44 BE 4F 02 00
-3E 4F 30 4D 5E 49 82 49 53 00 0D 12 87 12 38 46
-EA 44 B0 45 C0 4E 8C 4E 2C 44 9C 4E 24 4C 22 44
-54 4E 9C 4E 22 44 A6 4E 09 49 4D 4D 45 44 49 41
-54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D B4 49
-87 52 45 43 55 52 53 45 19 42 CC 1D 99 42 BA 1D
-00 00 A2 53 CC 1D 30 4D 04 4D 88 50 4F 53 54 50
-4F 4E 45 00 0D 12 87 12 20 46 00 4A 5E 4A 4C 44
-B0 45 64 4E 68 45 B0 45 26 4F 2C 44 2C 44 24 4C
-24 4C 2C 44 24 4C 24 4C 22 44 82 9F BC 1D 2C 25
-0D 12 87 12 7C 49 0F 73 74 61 63 6B 20 6D 69 73
-6D 61 74 63 68 21 C8 4D 88 4E 81 3B 82 93 BE 1D
-8C 27 0D 12 87 12 2C 44 22 44 24 4C 2A 4F 76 4E
-22 44 BA 40 0D 12 FC FF BA 40 87 12 FE FF B2 43
-BE 1D 82 4F BC 1D 30 4D 4A 4F 01 3A 30 12 62 4F
-0D 12 87 12 DA 49 20 46 00 4A 8C 4F 08 4E 7A 4E
-5A D3 5A 53 0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00
-09 5E 3E 4F 3D 41 82 48 B6 1D 82 49 B8 1D 82 4A
-BA 1D 2A 52 82 4A CC 1D 30 41 FA 49 08 56 41 52
-49 41 42 4C 45 00 B0 12 80 4F BA 40 86 12 FC FF
-DF 3C 66 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12
-80 4F BA 40 85 12 FC FF 8A 4E FE FF 3E 4F D0 3C
-D4 4F 06 43 52 45 41 54 45 00 B0 12 80 4F BA 40
-85 12 FC FF 8A 4A FE FF C3 3C D6 4C 05 44 4F 45
-53 3E 1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00
-3D 41 30 4D 0C 50 05 44 45 46 45 52 B0 12 80 4F
-BA 40 30 40 FC FF BA 40 22 50 FE FF A9 3C F2 4F
-07 43 4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F
-0E 4B 0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53
-F9 98 FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D
-7A 4F 86 5B 54 48 45 4E 5D 00 30 4D 72 50 86 5B
-45 4C 53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46
-00 4A 6C 4C 3C 44 B0 45 F2 50 82 44 82 44 7C 49
-04 5B 49 46 5D 00 48 50 BA 45 B4 50 56 49 2E 45
-AC 45 EA 50 82 44 82 44 7C 49 06 5B 45 4C 53 45
-5D 00 48 50 BA 45 D8 50 56 49 38 45 3C 44 B0 45
-EA 50 2E 45 AC 45 EA 50 7C 49 06 5B 54 48 45 4E
-5D 00 48 50 BA 45 EA 50 38 45 4C 44 BA 45 8E 50
-22 44 56 49 7C 49 05 0D 0A 6B 6F 20 34 49 D6 47
-7A 4C AC 45 8E 50 7E 50 84 5B 49 46 5D 00 0E 93
-3E 4F B9 27 30 4D 08 51 8B 5B 55 4E 44 45 46 49
-4E 45 44 5D 0D 12 87 12 20 46 00 4A 5E 4A 64 44
-5C 45 22 44 18 51 89 5B 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 00 4A 5E 4A 64 44 22 44 50 51
-3D 41 B2 4E 0E 18 A2 4E 0C 18 3E 4F 6C 3D 36 4C
-06 4D 41 52 4B 45 52 00 B0 12 80 4F BA 40 84 12
-FC FF BA 40 4E 51 FE FF 9A 42 CE 1D 00 00 28 83
-8A 48 02 00 A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D
-A8 49 FE FF 89 48 00 00 30 4D C8 4E 82 49 46 00
-2F 83 8F 4E 00 00 1E 42 CC 1D A2 52 CC 1D BE 40
-B0 45 00 00 2E 53 30 4D 26 50 84 45 4C 53 45 00
-A2 52 CC 1D 1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A
-00 00 2A 83 0E 4A 30 4D 2E 49 84 54 48 45 4E 00
-9E 42 CC 1D 00 00 3E 4F 30 4D 40 50 85 42 45 47
-49 4E 30 40 74 47 DA 51 85 55 4E 54 49 4C 39 40
-B0 45 A2 52 CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E
-FE FF 3E 4F 30 4D 3A 4E 85 41 47 41 49 4E 39 40
-AC 45 EF 3F BC 4F 85 57 48 49 4C 45 0D 12 87 12
-A0 51 70 44 22 44 E0 4E 86 52 45 50 45 41 54 00
-0D 12 87 12 1E 52 E0 51 22 44 BA 51 82 44 4F 00
-2F 83 8F 4E 00 00 A2 53 CC 1D 1E 42 CC 1D BE 40
-C0 45 FE FF A2 53 00 1C 1A 42 00 1C 8A 43 00 00
-30 4D 60 51 84 4C 4F 4F 50 00 39 40 E2 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42
-00 1C A2 83 00 1C 2E 4E 0E 93 03 24 8E 4A 00 00
-F6 3F 3E 4F 30 4D CE 47 85 2B 4C 4F 4F 50 39 40
-D0 45 E5 3F 74 52 85 4C 45 41 56 45 1A 42 CC 1D
-BA 40 F2 45 00 00 BA 40 AC 45 02 00 B2 50 06 00
-CC 1D A2 53 00 1C 2A 52 19 42 00 1C 89 4A 00 00
-30 4D B6 52 04 4D 4F 56 45 00 0A 4E 38 4F 39 4F
-3E 4F 0A 93 11 24 08 99 0F 24 06 2C F8 49 00 00
-18 53 1A 83 FB 23 30 4D 08 5A 09 5A 19 83 18 83
-E8 49 00 00 1A 83 FA 23 30 4D 26 52 0A 56 4F 43
-41 42 55 4C 41 52 59 00 0D 12 87 12 FA 4F 2C 44
-10 00 2C 44 00 00 C0 45 2C 44 00 00 24 4C E2 45
-38 53 74 47 2C 44 CE 1D 3C 44 EA 44 24 4C F2 44
-12 50 2C 44 D0 1D F2 44 22 44 52 4E 05 46 4F 52
-54 48 84 12 52 53 E4 5D A8 56 5A 5F 5C 53 8E 56
-A8 52 22 5F 4E 5E 6C 5E 60 54 30 5F 76 5E 00 00
-D8 5D 7E 4E 62 5E 00 00 18 52 04 41 4C 53 4F 00
-3A 40 0E 00 39 40 D0 1D 38 40 D2 1D B5 3F FA 4E
-08 50 52 45 56 49 4F 55 53 00 3A 40 0E 00 39 40
-D2 1D 38 40 D0 1D A2 3F E6 49 04 4F 4E 4C 59 00
-82 43 D2 1D 30 4D 4C 52 0B 44 45 46 49 4E 49 54
-49 4F 4E 53 92 42 D0 1D E0 1D 30 4D 62 53 C0 53
-D4 53 E4 53 3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D
-3D 40 10 00 09 4A 08 49 29 83 18 48 FE FF 0E 98
-FC 2B 89 48 00 00 1D 83 F6 23 2A 4A 0A 93 F0 23
-3E 4F 3D 41 30 4D A0 53 09 50 57 52 5F 53 54 41
-54 45 84 12 DC 53 8A 56 E2 5F 38 52 09 52 53 54
-5F 53 54 41 54 45 92 42 0E 18 26 54 92 42 0C 18
-28 54 EF 3F 18 54 08 50 57 52 5F 48 45 52 45 00
-92 42 CE 1D 26 54 92 42 CC 1D 28 54 30 4D 2C 54
-08 52 53 54 5F 48 45 52 45 00 92 42 CE 1D 0E 18
-92 42 CC 1D 0C 18 EC 3F 1C 53 04 57 49 50 45 00
-39 40 80 FF B9 43 00 00 29 53 39 90 C6 FF FA 23
-B0 12 7E 4D B2 40 E2 5F 0C 18 B2 40 8A 56 0E 18
-CA 3F 9C 51 06 28 57 41 52 4D 29 00 1E 42 08 18
-0D 12 87 12 7C 49 06 0D 1B 5B 37 6D 23 00 34 49
-5E 47 7C 49 1F 46 61 73 74 46 6F 72 74 68 20 56
-32 30 35 20 28 43 29 4A 2E 4D 2E 54 68 6F 6F 72
-65 6E 73 20 34 49 2C 44 30 FF 74 47 20 45 26 47
-7C 49 0B 62 79 74 65 73 20 66 72 65 65 20 CE 4D
-7A 54 04 57 41 52 4D 00 30 40 AC 54 EC 51 04 43
-4F 4C 44 00 B2 40 04 A5 20 01 B2 40 88 5A 5C 01
-92 43 04 02 B2 40 FE FF 02 02 A2 83 06 02 92 D3
-24 02 B2 D3 26 02 B2 43 22 02 B2 43 42 02 B2 D3
-46 02 B2 43 62 02 B2 D3 66 02 B2 40 80 00 84 02
-B2 40 7F FF 82 02 B2 D0 7F FF 86 02 F2 43 22 03
-F2 D3 26 03 F2 40 A5 00 41 01 F2 40 10 00 40 01
-D2 43 41 01 F2 40 A5 00 61 01 B2 40 48 00 62 01
-82 43 66 01 39 40 00 01 B2 40 33 00 64 01 D2 43
-61 01 92 D2 9E 01 08 18 A2 93 08 18 01 24 59 07
-38 40 59 14 18 83 FE 23 19 83 FA 23 B2 42 B0 01
-F2 D0 10 00 2A 03 F2 C0 40 00 A2 04 3A 40 1A 55
-39 40 C6 FF 89 4A 00 00 29 53 FC 23 92 42 02 18
-E4 FF B2 40 18 00 0A 18 39 40 00 1C 89 43 00 00
-29 53 39 90 FF 23 FA 2B 31 40 E0 1C 3F 40 80 1C
-37 40 22 44 36 40 B4 44 35 40 00 44 34 40 0C 44
-B2 40 0A 00 E2 1D B2 43 B4 1D 92 C3 30 01 18 42
-08 18 F2 B0 10 00 20 02 04 20 38 E3 18 53 82 48
-08 18 B2 40 81 00 E0 05 B2 40 03 00 E6 05 B2 40
-00 21 E8 05 F2 D0 30 00 2A 02 92 C3 E0 05 92 D3
-FA 05 3D 40 58 56 38 90 0A 00 1A 27 38 90 16 00
-17 2F 28 93 F0 22 E5 26 08 55 8A 53 09 41 53 53
-45 4D 42 4C 45 52 84 12 52 53 B2 5C 20 5D 66 5C
-8A 5D 2C 5C B2 5D 30 59 00 00 22 5C D6 5C 84 5C
-C4 5C 40 5A 00 00 00 00 C2 5D 86 53 A4 54 85 48
-49 32 4C 4F 0D 12 87 12 74 47 B4 51 24 4C 76 4E
-90 53 66 56 22 44 0E 55 04 43 4F 44 45 00 B0 12
-80 4F A2 82 CC 1D 0D 12 87 12 72 4F AC 45 A0 56
-00 00 07 45 4E 44 43 4F 44 45 0D 12 87 12 AA 53
-2A 4F 22 44 5C 56 03 41 53 4D 92 42 E0 1D C0 1D
-B2 40 6A 56 E0 1D E3 3F C2 56 06 45 4E 44 41 53
-4D 00 92 42 C0 1D E0 1D E8 3F 00 00 05 43 4F 4C
-4F 4E 1A 42 CC 1D BA 40 0D 12 00 00 BA 40 87 12
-02 00 A2 52 CC 1D B2 43 BE 1D 30 40 AA 53 00 00
-05 4C 4F 32 48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F
-38 40 C6 1D 39 48 2A 48 09 5A 1A 52 CA 1D 09 9A
-03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D
-30 4D 87 12 00 4A 5E 4A BA 45 64 57 18 4B B0 45
-64 4E 86 57 66 57 29 4E 39 90 86 12 02 20 2E 53
-30 41 39 90 85 12 03 20 1E 4E 02 00 30 41 39 90
-84 12 01 20 2E 52 30 41 19 42 CC 1D A2 53 CC 1D
-89 4E 00 00 3E 40 29 00 12 12 CA 1D 92 53 CA 1D
-87 12 00 4A 18 4B B0 45 B6 57 AC 57 21 53 3E 90
-10 00 BE 2D 30 41 B8 57 B2 41 CA 1D 22 D3 30 41
-0D 12 87 12 20 46 30 57 CA 57 82 43 C4 1D 92 42
-CC 1D C2 1D A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00
-00 00 34 20 92 53 CA 1D B0 12 52 57 0E 93 04 20
-B2 40 00 03 C4 1D 27 3C 1E 93 04 20 B2 40 10 03
-C4 1D 21 3C 2E 93 04 20 B2 40 20 03 C4 1D 1B 3C
-2E 92 04 20 B2 40 20 02 C4 1D 15 3C 3E 92 04 20
-B2 40 30 02 C4 1D 0F 3C 3E 93 04 20 B2 40 30 03
-C4 1D 09 3C B2 40 30 00 C4 1D 19 42 CC 1D A2 53
-CC 1D 89 4E 00 00 3E 4F 3D 41 30 4D FA 90 26 00
-00 00 08 20 B2 40 10 02 C4 1D 92 53 CA 1D B0 12
-52 57 EB 3F FA 90 40 00 00 00 1A 20 B2 40 20 00
-C4 1D 92 53 CA 1D B0 12 98 57 0E 20 B2 50 10 00
-C4 1D 3E 40 2B 00 B0 12 98 57 33 24 92 92 C6 1D
-CA 1D 02 24 92 53 CA 1D 8E 10 82 5E C4 1D D3 3F
-B0 12 98 57 F9 23 B2 50 10 00 C4 1D 3E 40 28 00
-B0 12 52 57 B0 12 88 57 E8 3F 0D 12 87 12 20 46
-30 57 C4 58 FE 90 26 00 00 00 3E 40 20 00 04 20
-B2 50 82 00 C4 1D C1 3F B0 12 98 57 DE 23 B2 50
-80 00 C4 1D 3E 40 28 00 B0 12 52 57 B0 12 88 57
-D4 23 3D 40 64 4E 30 4D 46 48 04 52 45 54 49 00
-0D 12 87 12 2C 44 00 13 24 4C 22 44 2C 44 2C 00
-C0 57 BA 58 16 59 2E 4E 1E D2 C4 1D 19 42 C2 1D
-90 3F 20 57 03 4D 4F 56 84 12 0C 59 00 40 24 59
-05 4D 4F 56 2E 42 84 12 0C 59 40 40 00 00 03 41
-44 44 84 12 0C 59 00 50 3E 59 05 41 44 44 2E 42
-84 12 0C 59 40 50 4A 59 04 41 44 44 43 00 84 12
-0C 59 00 60 58 59 06 41 44 44 43 2E 42 00 84 12
-0C 59 40 60 FA 58 04 53 55 42 43 00 84 12 0C 59
-00 70 76 59 06 53 55 42 43 2E 42 00 84 12 0C 59
-40 70 84 59 03 53 55 42 84 12 0C 59 00 80 94 59
-05 53 55 42 2E 42 84 12 0C 59 40 80 FC 56 03 43
-4D 50 84 12 0C 59 00 90 AE 59 05 43 4D 50 2E 42
-84 12 0C 59 40 90 EA 56 04 44 41 44 44 00 84 12
-0C 59 00 A0 C8 59 06 44 41 44 44 2E 42 00 84 12
-0C 59 40 A0 BA 59 03 42 49 54 84 12 0C 59 00 B0
-E6 59 05 42 49 54 2E 42 84 12 0C 59 40 B0 F2 59
-03 42 49 43 84 12 0C 59 00 C0 00 5A 05 42 49 43
-2E 42 84 12 0C 59 40 C0 0C 5A 03 42 49 53 84 12
-0C 59 00 D0 1A 5A 05 42 49 53 2E 42 84 12 0C 59
-40 D0 00 00 03 58 4F 52 84 12 0C 59 00 E0 34 5A
-05 58 4F 52 2E 42 84 12 0C 59 40 E0 66 59 03 41
-4E 44 84 12 0C 59 00 F0 4E 5A 05 41 4E 44 2E 42
-84 12 0C 59 40 F0 20 46 C0 57 6C 5A 1A 42 C4 1D
-B2 F0 70 00 C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D
-4A 3F A0 59 03 52 52 43 84 12 66 5A 00 10 84 5A
-05 52 52 43 2E 42 84 12 66 5A 40 10 90 5A 04 53
-57 50 42 00 84 12 66 5A 80 10 9E 5A 03 52 52 41
-84 12 66 5A 00 11 AC 5A 05 52 52 41 2E 42 84 12
-66 5A 40 11 B8 5A 03 53 58 54 84 12 66 5A 80 11
-00 00 04 50 55 53 48 00 84 12 66 5A 00 12 D2 5A
-06 50 55 53 48 2E 42 00 84 12 66 5A 40 12 26 5A
-04 43 41 4C 4C 00 84 12 66 5A 80 12 2C 44 2C 00
-C0 57 BA 58 06 5B 59 42 C4 1D 5A 42 C5 1D 82 4A
-C4 1D BE 90 00 15 00 00 02 20 0A 89 02 3C 09 8A
-0A 49 3A 90 10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A
-0D 12 87 12 5E 47 7C 49 0D 6F 75 74 20 6F 66 20
-62 6F 75 6E 64 73 C8 4D E0 5A 05 50 55 53 48 4D
-84 12 FC 5A 00 15 4A 5B 04 50 4F 50 4D 00 84 12
-FC 5A 00 17 20 46 30 57 6A 5B 82 43 C4 1D 92 42
-CC 1D C2 1D A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00
-87 12 00 4A 18 4B B0 45 64 4E BA 58 8E 5B 0A 4E
-3E 4F 1A 83 2A 92 CA 2F 8A 10 5A 06 6F 3F C6 5A
-04 52 52 43 4D 00 84 12 64 5B 50 00 A0 5B 04 52
-52 41 4D 00 84 12 64 5B 50 01 AE 5B 04 52 4C 41
-4D 00 84 12 64 5B 50 02 BC 5B 04 52 52 55 4D 00
-84 12 64 5B 50 03 85 12 00 3C CA 5B 03 53 3E 3D
-85 12 00 38 DC 5B 02 53 3C 00 85 12 00 34 58 5B
-03 30 3E 3D 85 12 00 30 F0 5B 02 30 3C 00 85 12
-00 30 00 00 02 55 3C 00 85 12 00 2C 04 5C 03 55
-3E 3D 85 12 00 28 FA 5B 03 30 3C 3E 85 12 00 24
-18 5C 02 30 3D 00 85 12 00 20 52 48 02 49 46 00
-1A 42 CC 1D 8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D
-0E 5C 04 54 48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F
-09 48 29 53 0A 89 0A 11 3A 90 00 02 68 2F 88 DA
-00 00 30 4D D6 59 04 45 4C 53 45 00 1A 42 CC 1D
-BA 40 00 3C 00 00 A2 53 CC 1D 2F 83 8F 4A 00 00
-E3 3F 42 5C 05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F
-19 42 CC 1D 2A 83 0A 89 0A 11 3A 90 00 FE 47 3B
-3A F0 FF 03 08 DA 89 48 00 00 A2 53 CC 1D 30 4D
-5A 5A 05 41 47 41 49 4E 0D 12 87 12 D6 5B 8A 5C
-22 44 00 00 05 57 48 49 4C 45 0D 12 87 12 30 5C
-70 44 22 44 E6 5B 06 52 45 50 45 41 54 00 0D 12
-87 12 D6 5B 8A 5C 48 5C 22 44 EC 5C 3D 41 08 4E
-3E 4F 2A 48 0A 93 04 20 98 42 CC 1D 00 00 30 4D
-88 43 00 00 C3 3F F0 5A 03 42 57 31 84 12 EA 5C
-00 00 08 5D 03 42 57 32 84 12 EA 5C 00 00 14 5D
-03 42 57 33 84 12 EA 5C 00 00 2C 5D 3D 41 1A 42
-CC 1D 28 4E 08 93 08 20 BA 4F 00 00 A2 53 CC 1D
-8E 4A 00 00 3E 4F 30 4D 8E 43 00 00 80 3F 00 00
-03 46 57 31 84 12 2A 5D 00 00 50 5D 03 46 57 32
-84 12 2A 5D 00 00 5C 5D 03 46 57 33 84 12 2A 5D
-00 00 3E 90 00 30 07 24 3E E0 00 04 3E B0 00 10
-02 24 3E E0 00 08 30 4D 68 5D 04 47 4F 54 4F 00
-0D 12 87 12 D6 5B 54 4E 1A 4C 22 44 00 00 05 3F
-47 4F 54 4F 0D 12 87 12 72 5D 54 4E 1A 4C 22 44
-00 00 03 4A 4D 50 0D 12 87 12 54 4E B8 5C 22 44
-9E 5D 04 3F 4A 4D 50 00 0D 12 87 12 72 5D 54 4E
-70 44 8A 5C 22 44 36 51 07 7B 54 4F 4F 4C 53 7D
-30 4D D6 56 03 41 4E 44 3E FF 30 4D BA 53 02 2E
-53 00 8F 4E FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40
-80 1C 2E 83 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11
-0D 12 87 12 2C 44 3C 00 C6 48 5E 47 2C 44 08 00
-C6 48 2C 44 3E 00 C6 48 FC 48 82 44 82 44 8E 45
-BA 45 3A 5E 5A 44 5A 44 22 44 C0 45 F8 45 EA 44
-26 47 2C 44 02 00 D0 45 3C 5E 22 44 EE 5D 03 2E
-52 53 8F 4E FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F
-BE 4A 01 3F 2E 4E 30 40 26 47 46 54 03 50 41 44
-85 12 E4 1C 02 55 05 57 4F 52 44 53 0D 12 87 12
-78 49 2C 44 03 00 12 49 2C 44 D0 1D EA 44 70 5E
-2C 44 10 00 3C 44 18 45 EA 52 2C 44 00 00 3C 44
-2C 44 10 00 3C 44 18 45 2C 44 00 00 C0 45 3C 44
-F8 45 70 5E 18 45 EA 44 A4 45 B0 45 CC 5E 5A 44
-5A 44 F8 45 3C 44 70 5E 18 45 EA 44 2C 44 02 00
-D0 45 AE 5E 4C 44 B0 45 0E 5F 3C 44 2C 44 02 00
-20 45 EA 44 92 44 70 5E 18 45 F2 44 3C 44 6C 4C
-2C 44 7F 00 E8 5D 34 49 00 45 2C 44 0F 00 E8 5D
-2C 44 10 00 70 44 20 45 12 49 AC 45 9A 5E 5A 44
-22 44 E4 52 03 4D 41 58 2E 9F 07 38 2F 53 30 4D
-14 5F 03 4D 49 4E 2E 9F F9 3B 3E 4F 30 4D F8 51
-03 55 2E 52 0D 12 87 12 A8 44 42 46 2C 44 00 00
-A2 46 D4 46 F0 46 B4 44 82 44 20 45 2C 44 00 00
-18 5F 12 49 34 49 22 44 C8 53 04 44 55 4D 50 00
-0D 12 12 12 E2 1D B2 40 10 00 E2 1D 2E 5F 87 12
-70 44 82 44 82 44 26 47 2C 44 01 00 20 45 26 47
-2C 44 FE FF E8 5D C0 45 78 49 F8 45 2C 44 07 00
-34 5F FC 48 F8 45 2C 44 10 00 18 45 F8 45 C0 45
-F8 45 00 45 2C 44 03 00 34 5F E2 45 A0 5F FC 48
-FC 48 F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45
-00 45 2C 44 7E 00 26 5F 20 46 18 5F C6 48 E2 45
-BE 5F 2C 44 10 00 D0 45 88 5F B4 44 2C 46 F2 44
-22 44
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 B0 5D
+26 57 26 5F 64 53 82 56 B0 52 EE 5E 1A 5E 38 5E
+68 54 FC 5E 42 5E 00 00 A4 5D 5E 4E 2E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 7E 56
+AE 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 AE 5F 0C 18 B2 40
+7E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 43 04 02 B2 40
+FE FF 02 02 A2 83 06 02 92 D3 24 02 B2 D3 26 02
+B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02
+B2 D3 66 02 B2 40 80 00 84 02 B2 40 7F FF 82 02
+B2 D0 7F FF 86 02 F2 43 22 03 F2 D3 26 03 F2 40
+A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01 F2 40
+A5 00 61 01 B2 40 48 00 62 01 82 43 66 01 39 40
+00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 42 B0 01 F2 D0 10 00 2A 03
+F2 C0 40 00 A2 04 39 40 3A 00 29 83 B9 40 14 55
+C6 FF FB 23 B2 40 54 48 E4 FF B2 40 18 00 0A 18
+39 40 00 08 29 83 89 43 00 1C FC 23 31 40 E0 1C
+3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40 00 44
+34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D 92 C3
+30 01 18 42 08 18 F2 B0 10 00 20 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 E0 05 92 42 02 18
+E6 05 92 42 04 18 E8 05 F2 D0 30 00 2A 02 92 C3
+E0 05 92 D3 FA 05 3D 40 4C 56 38 90 0A 00 24 27
+38 90 16 00 21 2F 28 93 FA 22 EF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 7E 5C
+EC 5C 32 5C 56 5D F8 5B 7E 5D 12 59 00 00 EE 5B
+A2 5C 50 5C 90 5C 22 5A 00 00 00 00 8E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 5A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 94 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 50 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 5E 56 DA 1D E3 3F B6 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 9C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 38 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 78 57
+00 4B B0 45 44 4E 9A 57 7A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 64 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 D6 57 CC 57 21 53 3E 90
+10 00 84 2D E2 2B D8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 42 57 E8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 64 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 64 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+B6 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 B6 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 B6 57 FA 23 3C 50 10 00 B0 12 9E 57
+EF 3F 0D 12 87 12 20 46 42 57 BC 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+B6 57 E5 23 3C 50 80 00 B0 12 9E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 DE 57 B2 58 FC 58 2E 4E 0E DC
+09 4B A5 3F 14 57 03 4D 4F 56 84 12 F2 58 00 40
+06 59 05 4D 4F 56 2E 42 84 12 F2 58 40 40 00 00
+03 41 44 44 84 12 F2 58 00 50 20 59 05 41 44 44
+2E 42 84 12 F2 58 40 50 2C 59 04 41 44 44 43 00
+84 12 F2 58 00 60 3A 59 06 41 44 44 43 2E 42 00
+84 12 F2 58 40 60 E0 58 04 53 55 42 43 00 84 12
+F2 58 00 70 58 59 06 53 55 42 43 2E 42 00 84 12
+F2 58 40 70 66 59 03 53 55 42 84 12 F2 58 00 80
+76 59 05 53 55 42 2E 42 84 12 F2 58 40 80 F0 56
+03 43 4D 50 84 12 F2 58 00 90 90 59 05 43 4D 50
+2E 42 84 12 F2 58 40 90 DE 56 04 44 41 44 44 00
+84 12 F2 58 00 A0 AA 59 06 44 41 44 44 2E 42 00
+84 12 F2 58 40 A0 9C 59 03 42 49 54 84 12 F2 58
+00 B0 C8 59 05 42 49 54 2E 42 84 12 F2 58 40 B0
+D4 59 03 42 49 43 84 12 F2 58 00 C0 E2 59 05 42
+49 43 2E 42 84 12 F2 58 40 C0 EE 59 03 42 49 53
+84 12 F2 58 00 D0 FC 59 05 42 49 53 2E 42 84 12
+F2 58 40 D0 00 00 03 58 4F 52 84 12 F2 58 00 E0
+16 5A 05 58 4F 52 2E 42 84 12 F2 58 40 E0 48 59
+03 41 4E 44 84 12 F2 58 00 F0 30 5A 05 41 4E 44
+2E 42 84 12 F2 58 40 F0 20 46 DE 57 4E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 82 59
+03 52 52 43 84 12 48 5A 00 10 60 5A 05 52 52 43
+2E 42 84 12 48 5A 40 10 6C 5A 04 53 57 50 42 00
+84 12 48 5A 80 10 7A 5A 03 52 52 41 84 12 48 5A
+00 11 88 5A 05 52 52 41 2E 42 84 12 48 5A 40 11
+94 5A 03 53 58 54 84 12 48 5A 80 11 00 00 04 50
+55 53 48 00 84 12 48 5A 00 12 AE 5A 06 50 55 53
+48 2E 42 00 84 12 48 5A 40 12 08 5A 04 43 41 4C
+4C 00 84 12 48 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 42 57 FA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E 1A 5B 1B 17 87 12 B2 58
+22 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F A2 5A
+04 52 52 43 4D 00 84 12 F4 5A 50 00 50 5B 04 52
+52 41 4D 00 84 12 F4 5A 50 01 5E 5B 04 52 4C 41
+4D 00 84 12 F4 5A 50 02 6C 5B 04 52 52 55 4D 00
+84 12 F4 5A 50 03 BC 5A 05 50 55 53 48 4D 84 12
+F4 5A 00 15 88 5B 04 50 4F 50 4D 00 84 12 F4 5A
+00 17 85 12 00 3C 7A 5B 03 53 3E 3D 85 12 00 38
+A8 5B 02 53 3C 00 85 12 00 34 96 5B 03 30 3E 3D
+85 12 00 30 BC 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C D0 5B 03 55 3E 3D 85 12
+00 28 C6 5B 03 30 3C 3E 85 12 00 24 E4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D DA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+B8 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F 0E 5C
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 3C 5A 05 41
+47 41 49 4E 0D 12 87 12 A2 5B 56 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 FC 5B 70 44 22 44
+B2 5B 06 52 45 50 45 41 54 00 0D 12 87 12 A2 5B
+56 5C 14 5C 22 44 B8 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D CC 5A 03 42 57 31 84 12 B6 5C E2 1D D4 5C
+03 42 57 32 84 12 B6 5C E4 1D E0 5C 03 42 57 33
+84 12 B6 5C E6 1D F8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 F6 5C E8 1D 1C 5D 03 46 57 32 84 12 F6 5C
+EA 1D 28 5D 03 46 57 33 84 12 F6 5C EC 1D 3E 90
+00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
+00 08 30 4D 34 5D 04 47 4F 54 4F 00 0D 12 87 12
+A2 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 3E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 84 5C 22 44 6A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 3E 5D 34 4E 70 44 56 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D CA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
+FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
+8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 06 5E
+5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
+02 00 D0 45 08 5E 22 44 BA 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 3C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 3C 5E
+18 45 EA 44 A4 45 B0 45 98 5E 5A 44 5A 44 F8 45
+3C 44 3C 5E 18 45 EA 44 2C 44 02 00 D0 45 7A 5E
+4C 44 B0 45 DA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 3C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+B4 5D 24 49 00 45 2C 44 0F 00 B4 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 66 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D E0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
+0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
+F0 46 B4 44 82 44 20 45 2C 44 00 00 E4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
+82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
+B4 5D C0 45 52 49 F8 45 2C 44 07 00 00 5F EC 48
+F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
+2C 44 03 00 00 5F E2 45 6C 5F EC 48 EC 48 F8 45
+2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
+7E 00 F2 5E 20 46 E4 5E B0 48 E2 45 8A 5F 2C 44
+10 00 D0 45 54 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-1A 55
+14 55
 q
index 2ce115e..3abecb0 100644 (file)
@@ -1,6 +1,8 @@
 @1800
-10 00 66 48 80 3E 00 24 05 00 18 00 EE 5F 96 56
-2C 48 3E 48 00 00 00 00
+10 00 11 00 00 4A 80 3E 05 00 18 00 AE 5F 7E 56
+24 48 36 48 00 00 00 00 00 00
+@2000
+00 00
 @4400
 2F 83 8F 4E 00 00 3E 41 2E 4E 30 4D 2F 83 8F 4E
 00 00 3E 41 0D 12 3D 4E 30 4D 00 00 04 45 58 49
@@ -36,7 +38,7 @@ F9 3F 64 45 02 30 3E 00 1E 93 EE 37 F4 3F 00 00
 50 00 F5 3F 00 00 01 49 2F 83 8F 4E 00 00 2E 41
 1E 81 02 00 30 4D 16 45 01 4A 2F 83 8F 4E 00 00
 1E 41 04 00 1E 81 06 00 30 4D 06 45 02 42 4C 00
-85 12 20 00 1C 46 04 42 41 53 45 00 85 12 E2 1D
+85 12 20 00 1C 46 04 42 41 53 45 00 85 12 DC 1D
 C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 23 00 B2 40 B2 1D B2 1D 30 4D EA 45 06 55 4D 2F
 4D 4F 44 00 30 12 5A 44 0B 4E 2E 4F 1C 4F 02 00
@@ -44,7 +46,7 @@ C0 44 05 53 54 41 54 45 85 12 BE 1D 7E 45 02 3C
 09 43 0A 9B 01 28 0A 8B 09 69 08 68 14 83 07 30
 0C 5C 0E 6E 0A 6A F5 2B 0A 8B 12 D3 F5 3F 34 40
 0C 44 8F 4A 02 00 8F 49 00 00 0E 48 30 41 26 46
-01 23 1B 42 E2 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
+01 23 1B 42 DC 1D 2C 4F 2F 83 B0 12 60 46 BF 4F
 00 00 7A 90 0A 00 02 28 3A 50 07 00 3A 50 30 00
 92 83 B2 1D 18 42 B2 1D C8 4A 00 00 30 4D A0 46
 02 23 53 00 0D 12 87 12 A2 46 DC 46 2D 83 09 93
@@ -53,402 +55,398 @@ E2 23 0E 93 E0 23 3D 41 30 4D D0 46 02 23 3E 00
 04 48 4F 4C 44 00 0A 4E 3E 4F DA 3F 32 46 04 53
 49 47 4E 00 0E 93 3E 4F 3A 40 2D 00 D1 33 30 4D
 4C 46 02 55 2E 00 0D 12 87 12 42 46 2C 44 00 00
-D4 46 F0 46 40 49 08 49 22 44 3E 45 02 44 2E 00
+D4 46 F0 46 24 49 EC 48 22 44 3E 45 02 44 2E 00
 0D 12 87 12 42 46 70 44 82 44 44 45 D4 46 92 44
-14 47 F0 46 40 49 08 49 22 44 7C 44 01 2E 0E 93
+14 47 F0 46 24 49 EC 48 22 44 7C 44 01 2E 0E 93
 E2 37 2F 83 8F 4E 00 00 3E 43 EA 3F 00 47 04 48
-45 52 45 00 2F 83 8F 4E 00 00 1E 42 CC 1D 30 4D
-F0 44 05 41 4C 4C 4F 54 82 5E CC 1D 3E 4F 30 4D
-EC 46 02 43 2C 00 1A 42 CC 1D CA 4E 00 00 92 53
-CC 1D 3E 4F 30 4D 6E 47 05 28 4B 45 59 29 18 42
-EC 05 2F 83 8F 4E 00 00 B0 12 2C 48 92 B3 FC 05
-FD 27 1E 42 EC 05 B0 12 3E 48 30 4D 08 46 03 4B
-45 59 30 40 AE 47 3F 80 06 00 8F 4E 04 00 3E 40
-54 00 BF 40 3C 1D 00 00 AF 4F 02 00 05 3C 82 47
-06 41 43 43 45 50 54 00 3C 40 A4 48 3B 40 6E 48
-2D 15 0A 4E 2E 4F 0A 5E 3B 40 0D 00 3C 40 20 00
-3D 40 98 48 92 B3 FC 05 05 24 18 42 EC 05 38 90
-0A 00 04 20 21 53 39 40 52 48 4D 15 A2 B3 FC 05
-FD 27 B2 40 11 00 EE 05 D2 C3 22 02 30 41 B2 40
-13 00 EE 05 D2 D3 22 02 30 41 00 00 05 53 4C 45
-45 50 30 40 60 48 00 00 07 28 53 4C 45 45 50 29
-12 D2 0A 18 F6 3F 21 52 3A 17 58 42 EC 05 48 9C
-08 2C 48 9B E4 27 78 92 11 20 2E 9F 0F 24 1E 83
-05 3C 0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 FC 05
-FD 27 82 48 EE 05 30 4D 9A 48 2D 83 92 B3 FC 05
-E4 23 FC 27 B2 40 18 00 0A 18 82 93 E4 1D 02 24
-92 53 E4 1D 3E 8F 3D 41 30 4D A8 47 06 28 45 4D
-49 54 29 00 08 4E 3E 4F E1 3F 3C 47 04 45 4D 49
-54 00 30 40 C4 48 CC 48 04 45 43 48 4F 00 B2 40
-82 48 92 48 82 43 E4 1D 30 4D 5C 47 06 4E 4F 45
-43 48 4F 00 B2 40 30 4D 92 48 92 43 E4 1D 30 4D
-0E 47 05 53 50 41 43 45 2F 83 8F 4E 00 00 3E 40
-20 00 DF 3F 02 49 06 53 50 41 43 45 53 00 0E 93
-09 24 0D 12 3D 40 2A 49 EF 3F 2C 49 2D 83 1E 83
-EB 23 3D 41 3E 4F 30 4D 22 47 04 54 59 50 45 00
-0E 93 0F 24 1E 15 3D 40 56 49 28 4F 7E 48 8F 48
-00 00 2F 83 BE 3F 58 49 2D 83 91 83 02 00 F5 23
-1D 17 2F 53 3E 4F 30 4D BC 48 04 28 43 52 29 00
-0D 12 87 12 88 49 02 0D 0A 00 40 49 22 44 92 47
-02 43 52 00 30 40 70 49 2F 82 8F 4E 02 00 7E 4D
-8F 4D 00 00 0D 5E 1D B3 0D 63 30 4D 80 49 07 43
-41 50 53 5F 4F 4E B2 43 B4 1D 30 4D 9E 49 08 43
-41 50 53 5F 4F 46 46 00 82 43 B4 1D 30 4D 16 49
-82 53 22 00 0D 12 87 12 2C 44 88 49 30 4C B8 49
-2C 44 22 00 0C 4A A6 49 DA 49 3D 41 6E 4E 1E 83
-82 5E CC 1D 3E 4F 92 B3 CC 1D A2 63 CC 1D 30 4D
-EC 48 82 2E 22 00 0D 12 87 12 C4 49 2C 44 40 49
-30 4C 22 44 00 00 04 57 4F 52 44 00 3C 40 C6 1D
-39 4C 3A 4C 09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A
-FC 27 1A 83 3B 40 60 00 C8 4C 00 00 09 9A 0F 24
-7C 4A 4E 9C 0C 24 18 53 4B 9C F6 2F 82 93 B4 1D
-F3 27 7C 90 7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82
-C8 1D 82 4A CA 1D 1E 42 CC 1D 08 8E CE 48 00 00
-30 4D 00 00 04 46 49 4E 44 00 2F 83 0C 4E 65 4C
-74 40 80 00 3B 40 D0 1D 3E 4B 0E 93 1E 24 58 4C
-01 00 78 F0 1E 00 0E 58 2E 53 1E 4E FE FF 0E 93
-F3 27 09 4E 78 49 48 C4 48 95 F7 23 0A 4C 1A 53
-FA 99 00 00 F2 23 58 83 FA 23 19 B3 09 63 0C 49
-6A 4E 1E 43 4A 93 01 30 2E 83 8F 4C 00 00 35 40
-00 44 34 40 0C 44 30 4D 8C 45 07 3E 4E 55 4D 42
-45 52 3C 4F 38 4F 29 4F 2F 82 1B 42 E2 1D 6A 4C
-7A 80 30 00 7A 90 0A 00 05 28 7A 80 07 00 7A 90
-0A 00 13 28 0A 9B 11 2C 82 49 D0 04 82 48 D2 04
-82 4B C8 04 19 42 E4 04 18 42 E6 04 09 5A 08 63
-1C 53 1E 83 E4 23 8F 48 02 00 8F 4C 00 00 8F 49
-04 00 30 4D 0C 43 1B 42 E2 1D 32 C0 00 02 2D 15
-09 43 08 43 3D 40 74 4B 3F 82 8F 4E 06 00 0C 4E
-7E 4C 6A 4C 7A 80 2C 00 10 2C 5A 83 2B 43 7A 52
-07 24 3B 52 6A 53 04 24 3B 40 10 00 5A 83 BF 23
-1C 53 1E 83 6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43
-02 00 CE 3F 76 4B 0E 93 32 24 32 B0 00 02 2F 20
-32 D0 00 02 FC 90 2E 00 00 00 02 20 2D 83 C0 3F
-FC 90 2C 00 00 00 23 20 0A 4E 09 43 8F 49 02 00
-5A 83 09 4A 09 5C 69 49 39 80 30 00 79 90 0A 00
-05 28 79 80 07 00 79 90 0A 00 0A 28 09 9B 08 2C
-8F 49 00 00 0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F
-9F 4F 04 00 02 00 AF 4F 04 00 0E 4A 4E 93 2B 17
-0E 4C 82 4B E2 1D 04 24 3F 50 06 00 0E F3 30 4D
-2F 53 9F 4F 02 00 04 00 BF 4F 00 00 3E E3 09 20
-3E E3 BF E3 02 00 BF E3 00 00 9F 53 02 00 8F 63
-00 00 32 B0 00 02 01 20 2F 53 30 4D D8 48 07 45
-58 45 43 55 54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C
-1A 42 CC 1D A2 53 CC 1D 8A 4E 00 00 3E 4F 30 4D
-2E 4C 87 4C 49 54 45 52 41 4C 82 93 BE 1D 0F 24
-1A 42 CC 1D A2 52 CC 1D BA 40 2C 44 00 00 8A 4E
-02 00 3E 4F 32 B0 00 02 32 C0 00 02 F1 23 30 4D
-AE 49 05 43 4F 55 4E 54 2F 83 1E 53 8F 4E 00 00
-5E 4E FF FF 30 4D 82 43 CA 1D 82 4E C6 1D B2 4F
-C8 1D 3E 4F 30 4D 0D 12 87 12 86 4C 20 46 0C 4A
-A2 4C 3D 40 AA 4C E1 22 44 3E AC 4C 0A 4E 3E 4F
-3D 40 C2 4C 37 27 3D 40 9C 4C 1A E2 BE 1D B8 27
-B2 23 C4 4C 3E 4F 3D 40 9C 4C BF 23 DE 53 00 00
-68 4E 08 5E F8 40 3F 00 00 00 3D 40 52 4F CC 3F
-1E 4C 08 45 56 41 4C 55 41 54 45 00 39 40 C6 1D
-3C 49 3B 49 3A 49 3D 15 87 12 96 4C FE 4C B2 41
-CA 1D B2 41 C8 1D B2 41 C6 1D 3D 41 30 4D 94 45
-04 51 55 49 54 00 31 40 E0 1C B2 40 00 1C 00 1C
-82 43 BE 1D 82 43 08 18 87 12 88 49 05 0D 0A 6F
-6B 20 40 49 D6 47 08 49 96 4C D6 44 68 45 88 49
-0D 73 74 61 63 6B 20 65 6D 70 74 79 21 20 C8 4D
-2C 44 30 FF 74 47 A4 45 88 49 0B 46 52 41 4D 20
-66 75 6C 6C 21 20 C8 4D 38 46 EA 44 B0 45 2A 4D
-88 49 05 0D 0A 20 20 20 AC 45 32 4D F0 47 05 41
-42 4F 52 54 3F 40 80 1C C6 3F B2 40 B8 54 16 55
-B2 40 60 48 54 48 B2 40 C4 48 D4 48 B2 40 70 49
-86 49 B2 40 AE 47 D4 47 82 43 1C 5D 82 43 28 5D
-82 43 34 5D 82 43 64 5D 82 43 70 5D 82 43 7C 5D
-B2 40 0A 00 E2 1D 30 41 8F 93 02 00 03 20 2F 52
-3E 4F 30 4D B2 40 82 48 92 48 B0 12 96 4D A2 B3
-FC 05 FD 27 B2 40 11 00 EE 05 D2 C3 22 02 92 C3
-FC 05 38 40 A0 AA 39 42 03 43 19 83 FD 23 18 83
-FA 23 92 B3 FC 05 F3 23 0D 12 87 12 88 49 04 1B
-5B 37 6D 00 40 49 2C 44 E4 1D EA 44 4C 44 B0 45
-32 4E 88 49 05 6C 69 6E 65 3A 40 49 38 45 26 47
-DE 48 40 49 88 49 04 1B 5B 30 6D 00 40 49 2E 54
-A6 49 84 4D 7E 4D 86 41 42 4F 52 54 22 00 0D 12
-87 12 C4 49 2C 44 C8 4D 30 4C 22 44 64 4A 01 27
-0D 12 87 12 20 46 0C 4A 6A 4A B0 45 70 4E 22 44
-CC 4C 3E 46 81 5C 92 42 C6 1D CA 1D 30 4D 00 00
-81 5B 82 43 BE 1D 30 4D 74 4E 01 5D B2 43 BE 1D
-30 4D 80 4E 83 5B 27 5D 0D 12 87 12 60 4E 2C 44
-2C 44 30 4C 30 4C 22 44 BE 4F 02 00 3E 4F 30 4D
-6A 49 82 49 53 00 0D 12 87 12 38 46 EA 44 B0 45
-CC 4E 98 4E 2C 44 A8 4E 30 4C 22 44 60 4E A8 4E
-22 44 B2 4E 09 49 4D 4D 45 44 49 41 54 45 1A 42
-B6 1D FA D0 80 00 00 00 30 4D C0 49 87 52 45 43
-55 52 53 45 19 42 CC 1D 99 42 BA 1D 00 00 A2 53
-CC 1D 30 4D 10 4D 88 50 4F 53 54 50 4F 4E 45 00
-0D 12 87 12 20 46 0C 4A 6A 4A 4C 44 B0 45 70 4E
-68 45 B0 45 32 4F 2C 44 2C 44 30 4C 30 4C 2C 44
-30 4C 30 4C 22 44 82 9F BC 1D 2C 25 0D 12 87 12
-88 49 0F 73 74 61 63 6B 20 6D 69 73 6D 61 74 63
-68 21 D4 4D 94 4E 81 3B 82 93 BE 1D 8C 27 0D 12
-87 12 2C 44 22 44 30 4C 36 4F 82 4E 22 44 BA 40
-0D 12 FC FF BA 40 87 12 FE FF B2 43 BE 1D 82 4F
-BC 1D 30 4D 56 4F 01 3A 30 12 6E 4F 0D 12 87 12
-E6 49 20 46 0C 4A 98 4F 08 4E 7A 4E 5A D3 5A 53
-0A 58 19 42 E0 1D 6E 4E 3E F0 1E 00 09 5E 3E 4F
-3D 41 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D 2A 52
-82 4A CC 1D 30 41 06 4A 08 56 41 52 49 41 42 4C
-45 00 B0 12 8C 4F BA 40 86 12 FC FF DF 3C 72 4C
-08 43 4F 4E 53 54 41 4E 54 00 B0 12 8C 4F BA 40
-85 12 FC FF 8A 4E FE FF 3E 4F D0 3C E0 4F 06 43
-52 45 41 54 45 00 B0 12 8C 4F BA 40 85 12 FC FF
-8A 4A FE FF C3 3C E2 4C 05 44 4F 45 53 3E 1A 42
-BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41 30 4D
-18 50 05 44 45 46 45 52 B0 12 8C 4F BA 40 30 40
-FC FF BA 40 2E 50 FE FF A9 3C FE 4F 07 43 4F 4D
-50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B 0E 5C
-0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98 FF FF
-F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 86 4F 86 5B
-54 48 45 4E 5D 00 30 4D 7E 50 86 5B 45 4C 53 45
-5D 00 0D 12 87 12 2C 44 01 00 20 46 0C 4A 78 4C
-3C 44 B0 45 FE 50 82 44 82 44 88 49 04 5B 49 46
-5D 00 54 50 BA 45 C0 50 62 49 2E 45 AC 45 F6 50
-82 44 82 44 88 49 06 5B 45 4C 53 45 5D 00 54 50
-BA 45 E4 50 62 49 38 45 3C 44 B0 45 F6 50 2E 45
-AC 45 F6 50 88 49 06 5B 54 48 45 4E 5D 00 54 50
-BA 45 F6 50 38 45 4C 44 BA 45 9A 50 22 44 62 49
-88 49 05 0D 0A 6B 6F 20 40 49 D6 47 86 4C AC 45
-9A 50 8A 50 84 5B 49 46 5D 00 0E 93 3E 4F B9 27
-30 4D 14 51 8B 5B 55 4E 44 45 46 49 4E 45 44 5D
-0D 12 87 12 20 46 0C 4A 6A 4A 64 44 5C 45 22 44
-24 51 89 5B 44 45 46 49 4E 45 44 5D 0D 12 87 12
-20 46 0C 4A 6A 4A 64 44 22 44 5C 51 3D 41 B2 4E
-0E 18 A2 4E 0C 18 3E 4F 6C 3D 42 4C 06 4D 41 52
-4B 45 52 00 B0 12 8C 4F BA 40 84 12 FC FF BA 40
-5A 51 FE FF 9A 42 CE 1D 00 00 28 83 8A 48 02 00
-A2 52 CC 1D 18 42 B6 1D 19 42 B8 1D A8 49 FE FF
-89 48 00 00 30 4D D4 4E 82 49 46 00 2F 83 8F 4E
-00 00 1E 42 CC 1D A2 52 CC 1D BE 40 B0 45 00 00
-2E 53 30 4D 32 50 84 45 4C 53 45 00 A2 52 CC 1D
-1A 42 CC 1D BA 40 AC 45 FC FF 8E 4A 00 00 2A 83
-0E 4A 30 4D 3A 49 84 54 48 45 4E 00 9E 42 CC 1D
-00 00 3E 4F 30 4D 4C 50 85 42 45 47 49 4E 30 40
-74 47 E6 51 85 55 4E 54 49 4C 39 40 B0 45 A2 52
-CC 1D 1A 42 CC 1D 8A 49 FC FF 8A 4E FE FF 3E 4F
-30 4D 46 4E 85 41 47 41 49 4E 39 40 AC 45 EF 3F
-C8 4F 85 57 48 49 4C 45 0D 12 87 12 AC 51 70 44
-22 44 EC 4E 86 52 45 50 45 41 54 00 0D 12 87 12
-2A 52 EC 51 22 44 C6 51 82 44 4F 00 2F 83 8F 4E
-00 00 A2 53 CC 1D 1E 42 CC 1D BE 40 C0 45 FE FF
-A2 53 00 1C 1A 42 00 1C 8A 43 00 00 30 4D 6C 51
-84 4C 4F 4F 50 00 39 40 E2 45 A2 52 CC 1D 1A 42
-CC 1D 8A 49 FC FF 8A 4E FE FF 1E 42 00 1C A2 83
-00 1C 2E 4E 0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F
-30 4D CE 47 85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F
-80 52 85 4C 45 41 56 45 1A 42 CC 1D BA 40 F2 45
-00 00 BA 40 AC 45 02 00 B2 50 06 00 CC 1D A2 53
-00 1C 2A 52 19 42 00 1C 89 4A 00 00 30 4D C2 52
-04 4D 4F 56 45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93
-11 24 08 99 0F 24 06 2C F8 49 00 00 18 53 1A 83
-FB 23 30 4D 08 5A 09 5A 19 83 18 83 E8 49 00 00
-1A 83 FA 23 30 4D 32 52 0A 56 4F 43 41 42 55 4C
-41 52 59 00 0D 12 87 12 06 50 2C 44 10 00 2C 44
-00 00 C0 45 2C 44 00 00 30 4C E2 45 44 53 74 47
-2C 44 CE 1D 3C 44 EA 44 30 4C F2 44 1E 50 2C 44
-D0 1D F2 44 22 44 5E 4E 05 46 4F 52 54 48 84 12
-5E 53 F0 5D B4 56 66 5F 68 53 9A 56 B4 52 2E 5F
-5A 5E 78 5E 6C 54 3C 5F 82 5E 00 00 E4 5D 8A 4E
-6E 5E 00 00 24 52 04 41 4C 53 4F 00 3A 40 0E 00
-39 40 D0 1D 38 40 D2 1D B5 3F 06 4F 08 50 52 45
-56 49 4F 55 53 00 3A 40 0E 00 39 40 D2 1D 38 40
-D0 1D A2 3F F2 49 04 4F 4E 4C 59 00 82 43 D2 1D
-30 4D 58 52 0B 44 45 46 49 4E 49 54 49 4F 4E 53
-92 42 D0 1D E0 1D 30 4D 6E 53 CC 53 E0 53 F0 53
-3A 4E 82 4A CE 1D 2E 4E 82 4E CC 1D 3D 40 10 00
-09 4A 08 49 29 83 18 48 FE FF 0E 98 FC 2B 89 48
-00 00 1D 83 F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41
-30 4D AC 53 09 50 57 52 5F 53 54 41 54 45 84 12
-E8 53 96 56 EE 5F 44 52 09 52 53 54 5F 53 54 41
-54 45 92 42 0E 18 32 54 92 42 0C 18 34 54 EF 3F
-24 54 08 50 57 52 5F 48 45 52 45 00 92 42 CE 1D
-32 54 92 42 CC 1D 34 54 30 4D 38 54 08 52 53 54
-5F 48 45 52 45 00 92 42 CE 1D 0E 18 92 42 CC 1D
-0C 18 EC 3F 28 53 04 57 49 50 45 00 39 40 80 FF
-B9 43 00 00 29 53 39 90 C6 FF FA 23 B0 12 8A 4D
-B2 40 EE 5F 0C 18 B2 40 96 56 0E 18 CA 3F A8 51
-06 28 57 41 52 4D 29 00 1E 42 08 18 0D 12 87 12
-88 49 06 0D 1B 5B 37 6D 23 00 40 49 5E 47 88 49
-1F 46 61 73 74 46 6F 72 74 68 20 56 32 30 35 20
-28 43 29 4A 2E 4D 2E 54 68 6F 6F 72 65 6E 73 20
-40 49 2C 44 30 FF 74 47 20 45 26 47 88 49 0B 62
-79 74 65 73 20 66 72 65 65 20 DA 4D 86 54 04 57
-41 52 4D 00 30 40 B8 54 F8 51 04 43 4F 4C 44 00
-B2 40 04 A5 20 01 B2 40 88 5A 5C 01 92 43 04 02
-B2 40 FE FF 02 02 A2 83 06 02 92 D3 24 02 B2 D3
-26 02 B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43
-62 02 B2 D3 66 02 B2 40 80 00 84 02 B2 40 7F FF
-82 02 B2 D0 7F FF 86 02 F2 43 22 03 F2 D3 26 03
-F2 40 A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01
-F2 40 A5 00 61 01 B2 40 48 00 62 01 82 43 66 01
-39 40 00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2
-9E 01 08 18 A2 93 08 18 01 24 59 07 38 40 59 14
-18 83 FE 23 19 83 FA 23 B2 42 B0 01 F2 D0 10 00
-2A 03 F2 C0 40 00 A2 04 3A 40 26 55 39 40 C6 FF
-89 4A 00 00 29 53 FC 23 92 42 02 18 E4 FF B2 40
-18 00 0A 18 39 40 00 1C 89 43 00 00 29 53 39 90
-FF 23 FA 2B 31 40 E0 1C 3F 40 80 1C 37 40 22 44
-36 40 B4 44 35 40 00 44 34 40 0C 44 B2 40 0A 00
-E2 1D B2 43 B4 1D 92 C3 30 01 18 42 08 18 F2 B0
-10 00 20 02 04 20 38 E3 18 53 82 48 08 18 B2 40
-81 00 E0 05 B2 40 11 00 E6 05 B2 40 00 4A E8 05
-F2 D0 30 00 2A 02 92 C3 E0 05 92 D3 FA 05 3D 40
-64 56 38 90 0A 00 1A 27 38 90 16 00 17 2F 28 93
-F0 22 E5 26 14 55 96 53 09 41 53 53 45 4D 42 4C
-45 52 84 12 5E 53 BE 5C 2C 5D 72 5C 96 5D 38 5C
-BE 5D 3C 59 00 00 2E 5C E2 5C 90 5C D0 5C 4C 5A
-00 00 00 00 CE 5D 92 53 B0 54 85 48 49 32 4C 4F
-0D 12 87 12 74 47 C0 51 30 4C 82 4E 9C 53 72 56
-22 44 1A 55 04 43 4F 44 45 00 B0 12 8C 4F A2 82
-CC 1D 0D 12 87 12 7E 4F AC 45 AC 56 00 00 07 45
-4E 44 43 4F 44 45 0D 12 87 12 B6 53 36 4F 22 44
-68 56 03 41 53 4D 92 42 E0 1D C0 1D B2 40 76 56
-E0 1D E3 3F CE 56 06 45 4E 44 41 53 4D 00 92 42
-C0 1D E0 1D E8 3F 00 00 05 43 4F 4C 4F 4E 1A 42
-CC 1D BA 40 0D 12 00 00 BA 40 87 12 02 00 A2 52
-CC 1D B2 43 BE 1D 30 40 B6 53 00 00 05 4C 4F 32
-48 49 A2 83 CC 1D 1A 42 CC 1D EE 3F 38 40 C6 1D
-39 48 2A 48 09 5A 1A 52 CA 1D 09 9A 03 24 7E 9A
-FC 27 1A 83 0E 4A 2A 88 82 4A CA 1D 30 4D 87 12
-0C 4A 6A 4A BA 45 70 57 24 4B B0 45 70 4E 92 57
-72 57 29 4E 39 90 86 12 02 20 2E 53 30 41 39 90
-85 12 03 20 1E 4E 02 00 30 41 39 90 84 12 01 20
-2E 52 30 41 19 42 CC 1D A2 53 CC 1D 89 4E 00 00
-3E 40 29 00 12 12 CA 1D 92 53 CA 1D 87 12 0C 4A
-24 4B B0 45 C2 57 B8 57 21 53 3E 90 10 00 BE 2D
-30 41 C4 57 B2 41 CA 1D 22 D3 30 41 0D 12 87 12
-20 46 3C 57 D6 57 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 0A 4E 3E 4F FA 90 23 00 00 00 34 20
-92 53 CA 1D B0 12 5E 57 0E 93 04 20 B2 40 00 03
-C4 1D 27 3C 1E 93 04 20 B2 40 10 03 C4 1D 21 3C
-2E 93 04 20 B2 40 20 03 C4 1D 1B 3C 2E 92 04 20
-B2 40 20 02 C4 1D 15 3C 3E 92 04 20 B2 40 30 02
-C4 1D 0F 3C 3E 93 04 20 B2 40 30 03 C4 1D 09 3C
-B2 40 30 00 C4 1D 19 42 CC 1D A2 53 CC 1D 89 4E
-00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 08 20
-B2 40 10 02 C4 1D 92 53 CA 1D B0 12 5E 57 EB 3F
-FA 90 40 00 00 00 1A 20 B2 40 20 00 C4 1D 92 53
-CA 1D B0 12 A4 57 0E 20 B2 50 10 00 C4 1D 3E 40
-2B 00 B0 12 A4 57 33 24 92 92 C6 1D CA 1D 02 24
-92 53 CA 1D 8E 10 82 5E C4 1D D3 3F B0 12 A4 57
-F9 23 B2 50 10 00 C4 1D 3E 40 28 00 B0 12 5E 57
-B0 12 94 57 E8 3F 0D 12 87 12 20 46 3C 57 D0 58
-FE 90 26 00 00 00 3E 40 20 00 04 20 B2 50 82 00
-C4 1D C1 3F B0 12 A4 57 DE 23 B2 50 80 00 C4 1D
-3E 40 28 00 B0 12 5E 57 B0 12 94 57 D4 23 3D 40
-70 4E 30 4D 4C 48 04 52 45 54 49 00 0D 12 87 12
-2C 44 00 13 30 4C 22 44 2C 44 2C 00 CC 57 C6 58
-22 59 2E 4E 1E D2 C4 1D 19 42 C2 1D 90 3F 2C 57
-03 4D 4F 56 84 12 18 59 00 40 30 59 05 4D 4F 56
-2E 42 84 12 18 59 40 40 00 00 03 41 44 44 84 12
-18 59 00 50 4A 59 05 41 44 44 2E 42 84 12 18 59
-40 50 56 59 04 41 44 44 43 00 84 12 18 59 00 60
-64 59 06 41 44 44 43 2E 42 00 84 12 18 59 40 60
-06 59 04 53 55 42 43 00 84 12 18 59 00 70 82 59
-06 53 55 42 43 2E 42 00 84 12 18 59 40 70 90 59
-03 53 55 42 84 12 18 59 00 80 A0 59 05 53 55 42
-2E 42 84 12 18 59 40 80 08 57 03 43 4D 50 84 12
-18 59 00 90 BA 59 05 43 4D 50 2E 42 84 12 18 59
-40 90 F6 56 04 44 41 44 44 00 84 12 18 59 00 A0
-D4 59 06 44 41 44 44 2E 42 00 84 12 18 59 40 A0
-C6 59 03 42 49 54 84 12 18 59 00 B0 F2 59 05 42
-49 54 2E 42 84 12 18 59 40 B0 FE 59 03 42 49 43
-84 12 18 59 00 C0 0C 5A 05 42 49 43 2E 42 84 12
-18 59 40 C0 18 5A 03 42 49 53 84 12 18 59 00 D0
-26 5A 05 42 49 53 2E 42 84 12 18 59 40 D0 00 00
-03 58 4F 52 84 12 18 59 00 E0 40 5A 05 58 4F 52
-2E 42 84 12 18 59 40 E0 72 59 03 41 4E 44 84 12
-18 59 00 F0 5A 5A 05 41 4E 44 2E 42 84 12 18 59
-40 F0 20 46 CC 57 78 5A 1A 42 C4 1D B2 F0 70 00
-C4 1D 8A 10 3A F0 0F 00 82 DA C4 1D 4A 3F AC 59
-03 52 52 43 84 12 72 5A 00 10 90 5A 05 52 52 43
-2E 42 84 12 72 5A 40 10 9C 5A 04 53 57 50 42 00
-84 12 72 5A 80 10 AA 5A 03 52 52 41 84 12 72 5A
-00 11 B8 5A 05 52 52 41 2E 42 84 12 72 5A 40 11
-C4 5A 03 53 58 54 84 12 72 5A 80 11 00 00 04 50
-55 53 48 00 84 12 72 5A 00 12 DE 5A 06 50 55 53
-48 2E 42 00 84 12 72 5A 40 12 32 5A 04 43 41 4C
-4C 00 84 12 72 5A 80 12 2C 44 2C 00 CC 57 C6 58
-12 5B 59 42 C4 1D 5A 42 C5 1D 82 4A C4 1D BE 90
-00 15 00 00 02 20 0A 89 02 3C 09 8A 0A 49 3A 90
-10 00 03 2C 5A 0E A8 3F 1A 53 0E 4A 0D 12 87 12
-5E 47 88 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
-64 73 D4 4D EC 5A 05 50 55 53 48 4D 84 12 08 5B
-00 15 56 5B 04 50 4F 50 4D 00 84 12 08 5B 00 17
-20 46 3C 57 76 5B 82 43 C4 1D 92 42 CC 1D C2 1D
-A2 53 CC 1D 92 53 CA 1D 3E 40 2C 00 87 12 0C 4A
-24 4B B0 45 70 4E C6 58 9A 5B 0A 4E 3E 4F 1A 83
-2A 92 CA 2F 8A 10 5A 06 6F 3F D2 5A 04 52 52 43
-4D 00 84 12 70 5B 50 00 AC 5B 04 52 52 41 4D 00
-84 12 70 5B 50 01 BA 5B 04 52 4C 41 4D 00 84 12
-70 5B 50 02 C8 5B 04 52 52 55 4D 00 84 12 70 5B
-50 03 85 12 00 3C D6 5B 03 53 3E 3D 85 12 00 38
-E8 5B 02 53 3C 00 85 12 00 34 64 5B 03 30 3E 3D
-85 12 00 30 FC 5B 02 30 3C 00 85 12 00 30 00 00
-02 55 3C 00 85 12 00 2C 10 5C 03 55 3E 3D 85 12
-00 28 06 5C 03 30 3C 3E 85 12 00 24 24 5C 02 30
-3D 00 85 12 00 20 58 48 02 49 46 00 1A 42 CC 1D
-8A 4E 00 00 A2 53 CC 1D 0E 4A 30 4D 1A 5C 04 54
-48 45 4E 00 1A 42 CC 1D 08 4E 3E 4F 09 48 29 53
-0A 89 0A 11 3A 90 00 02 68 2F 88 DA 00 00 30 4D
-E2 59 04 45 4C 53 45 00 1A 42 CC 1D BA 40 00 3C
-00 00 A2 53 CC 1D 2F 83 8F 4A 00 00 E3 3F 4E 5C
-05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 CC 1D
-2A 83 0A 89 0A 11 3A 90 00 FE 47 3B 3A F0 FF 03
-08 DA 89 48 00 00 A2 53 CC 1D 30 4D 66 5A 05 41
-47 41 49 4E 0D 12 87 12 E2 5B 96 5C 22 44 00 00
-05 57 48 49 4C 45 0D 12 87 12 3C 5C 70 44 22 44
-F2 5B 06 52 45 50 45 41 54 00 0D 12 87 12 E2 5B
-96 5C 54 5C 22 44 F8 5C 3D 41 08 4E 3E 4F 2A 48
-0A 93 04 20 98 42 CC 1D 00 00 30 4D 88 43 00 00
-C3 3F FC 5A 03 42 57 31 84 12 F6 5C 00 00 14 5D
-03 42 57 32 84 12 F6 5C 00 00 20 5D 03 42 57 33
-84 12 F6 5C 00 00 38 5D 3D 41 1A 42 CC 1D 28 4E
-08 93 08 20 BA 4F 00 00 A2 53 CC 1D 8E 4A 00 00
-3E 4F 30 4D 8E 43 00 00 80 3F 00 00 03 46 57 31
-84 12 36 5D 00 00 5C 5D 03 46 57 32 84 12 36 5D
-00 00 68 5D 03 46 57 33 84 12 36 5D 00 00 3E 90
+45 52 45 00 2F 83 8F 4E 00 00 1E 42 C6 1D 30 4D
+F0 44 05 41 4C 4C 4F 54 82 5E C6 1D 3E 4F 30 4D
+EC 46 02 43 2C 00 1A 42 C6 1D CA 4E 00 00 92 53
+C6 1D 3E 4F 30 4D 08 46 03 4B 45 59 30 40 B0 47
+18 42 EC 05 2F 83 8F 4E 00 00 B0 12 24 48 92 B3
+FC 05 FD 27 1E 42 EC 05 B0 12 36 48 30 4D 3F 80
+06 00 8F 4E 04 00 3E 40 54 00 BF 40 3C 1D 00 00
+AF 4F 02 00 05 3C 82 47 06 41 43 43 45 50 54 00
+3C 40 92 48 3B 40 5C 48 2D 15 0A 4E 2E 4F 0A 5E
+3B 40 0D 00 3C 40 20 00 3D 40 86 48 92 B3 FC 05
+05 24 18 42 EC 05 38 90 0A 00 04 20 21 53 39 40
+4A 48 4D 15 A2 B3 FC 05 FD 27 B2 40 11 00 EE 05
+D2 C3 22 02 30 41 B2 40 13 00 EE 05 D2 D3 22 02
+30 41 00 00 05 53 4C 45 45 50 30 40 4E 48 12 D2
+0A 18 FB 3F 21 52 3A 17 58 42 EC 05 48 9C 08 2C
+48 9B E9 27 78 92 11 20 2E 9F 0F 24 1E 83 05 3C
+0E 9A 03 24 CE 48 00 00 1E 53 A2 B3 FC 05 FD 27
+82 48 EE 05 30 4D 88 48 2D 83 92 B3 FC 05 E4 23
+FC 27 B2 40 18 00 0A 18 82 93 DE 1D 02 24 92 53
+DE 1D 3E 8F 3D 41 30 4D 3C 47 04 45 4D 49 54 00
+30 40 B4 48 08 4E 3E 4F E0 3F AA 48 04 45 43 48
+4F 00 B2 40 82 48 80 48 82 43 DE 1D 30 4D 5C 47
+06 4E 4F 45 43 48 4F 00 B2 40 30 4D 80 48 92 43
+DE 1D 30 4D 0E 47 05 53 50 41 43 45 2F 83 8F 4E
+00 00 3E 40 20 00 DC 3F E6 48 06 53 50 41 43 45
+53 00 0E 93 09 24 0D 12 3D 40 0E 49 EF 3F 10 49
+2D 83 1E 83 EB 23 3D 41 3E 4F 30 4D 22 47 04 54
+59 50 45 00 0E 93 0F 24 1E 15 3D 40 3A 49 28 4F
+7E 48 8F 48 00 00 2F 83 BB 3F 3C 49 2D 83 91 83
+02 00 F5 23 1D 17 2F 53 3E 4F 30 4D 92 47 02 43
+52 00 30 40 56 49 0D 12 87 12 64 49 02 0D 0A 00
+24 49 22 44 2F 82 8F 4E 02 00 7E 4D 8F 4D 00 00
+0D 5E 1D B3 0D 63 30 4D 4E 49 07 43 41 50 53 5F
+4F 4E B2 43 B4 1D 30 4D 7A 49 08 43 41 50 53 5F
+4F 46 46 00 82 43 B4 1D 30 4D FA 48 82 53 22 00
+0D 12 87 12 2C 44 64 49 0C 4C 94 49 2C 44 22 00
+E8 49 82 49 B6 49 3D 41 6E 4E 1E 83 82 5E C6 1D
+3E 4F 92 B3 C6 1D A2 63 C6 1D 30 4D D0 48 82 2E
+22 00 0D 12 87 12 A0 49 2C 44 24 49 0C 4C 22 44
+00 00 04 57 4F 52 44 00 3C 40 C0 1D 39 4C 3A 4C
+09 5A 3A 5C 28 4C 09 9A 1C 24 7E 9A FC 27 1A 83
+3B 40 60 00 C8 4C 00 00 09 9A 0F 24 7C 4A 4E 9C
+0C 24 18 53 4B 9C F6 2F 82 93 B4 1D F3 27 7C 90
+7B 00 F0 2F 7C 80 20 00 ED 3F 1A 82 C2 1D 82 4A
+C4 1D 1E 42 C6 1D 08 8E CE 48 00 00 30 4D 00 00
+04 46 49 4E 44 00 2F 83 0C 4E 65 4C 74 40 80 00
+3B 40 CA 1D 3E 4B 0E 93 1E 24 58 4C 01 00 78 F0
+1E 00 0E 58 2E 53 1E 4E FE FF 0E 93 F3 27 09 4E
+78 49 48 C4 48 95 F7 23 0A 4C 1A 53 FA 99 00 00
+F2 23 58 83 FA 23 19 B3 09 63 0C 49 6A 4E 1E 43
+4A 93 01 30 2E 83 8F 4C 00 00 35 40 00 44 34 40
+0C 44 30 4D 8C 45 07 3E 4E 55 4D 42 45 52 3C 4F
+38 4F 29 4F 2F 82 1B 42 DC 1D 6A 4C 7A 80 30 00
+7A 90 0A 00 05 28 7A 80 07 00 7A 90 0A 00 13 28
+0A 9B 11 2C 82 49 D0 04 82 48 D2 04 82 4B C8 04
+19 42 E4 04 18 42 E6 04 09 5A 08 63 1C 53 1E 83
+E4 23 8F 48 02 00 8F 4C 00 00 8F 49 04 00 30 4D
+0C 43 1B 42 DC 1D 32 C0 00 02 2D 15 09 43 08 43
+3D 40 50 4B 3F 82 8F 4E 06 00 0C 4E 7E 4C 6A 4C
+7A 80 2C 00 10 2C 5A 83 2B 43 7A 52 07 24 3B 52
+6A 53 04 24 3B 40 10 00 5A 83 BF 23 1C 53 1E 83
+6A 4C 7A 80 2C 00 5A 93 B8 23 B1 43 02 00 CE 3F
+52 4B 0E 93 32 24 32 B0 00 02 2F 20 32 D0 00 02
+FC 90 2E 00 00 00 02 20 2D 83 C0 3F FC 90 2C 00
+00 00 23 20 0A 4E 09 43 8F 49 02 00 5A 83 09 4A
+09 5C 69 49 39 80 30 00 79 90 0A 00 05 28 79 80
+07 00 79 90 0A 00 0A 28 09 9B 08 2C 8F 49 00 00
+0E 4B 2C 15 B0 12 58 46 2A 17 E6 3F 9F 4F 04 00
+02 00 AF 4F 04 00 0E 4A 4E 93 2B 17 0E 4C 82 4B
+DC 1D 04 24 3F 50 06 00 0E F3 30 4D 2F 53 9F 4F
+02 00 04 00 BF 4F 00 00 3E E3 09 20 3E E3 BF E3
+02 00 BF E3 00 00 9F 53 02 00 8F 63 00 00 32 B0
+00 02 01 20 2F 53 30 4D BC 48 07 45 58 45 43 55
+54 45 0A 4E 3E 4F 00 4A 1E 45 01 2C 1A 42 C6 1D
+A2 53 C6 1D 8A 4E 00 00 3E 4F 30 4D 0A 4C 87 4C
+49 54 45 52 41 4C 82 93 BE 1D 0F 24 1A 42 C6 1D
+A2 52 C6 1D BA 40 2C 44 00 00 8A 4E 02 00 3E 4F
+32 B0 00 02 32 C0 00 02 F1 23 30 4D 8A 49 05 43
+4F 55 4E 54 2F 83 1E 53 8F 4E 00 00 5E 4E FF FF
+30 4D 82 43 C4 1D 82 4E C0 1D B2 4F C2 1D 3E 4F
+30 4D 0D 12 87 12 62 4C 20 46 E8 49 7E 4C 3D 40
+86 4C E1 22 48 3E 88 4C 0A 4E 3E 4F 3D 40 9E 4C
+37 27 3D 40 78 4C 1A E2 BE 1D B8 27 B2 23 A0 4C
+3E 4F 3D 40 78 4C BF 23 DE 53 00 00 68 4E 08 5E
+F8 40 3F 00 00 00 3D 40 26 4F CC 3F FA 4B 08 45
+56 41 4C 55 41 54 45 00 39 40 C0 1D 3C 49 3B 49
+3A 49 3D 15 87 12 72 4C DA 4C B2 41 C4 1D B2 41
+C2 1D B2 41 C0 1D 3D 41 30 4D 94 45 04 51 55 49
+54 00 31 40 E0 1C B2 40 00 1C 00 1C 82 43 BE 1D
+82 43 08 18 87 12 64 49 05 0D 0A 6F 6B 20 24 49
+CE 47 EC 48 72 4C D6 44 68 45 64 49 0D 73 74 61
+63 6B 20 65 6D 70 74 79 21 20 9C 4D 2C 44 30 FF
+74 47 A4 45 64 49 0B 46 52 41 4D 20 66 75 6C 6C
+21 20 9C 4D 38 46 EA 44 B0 45 06 4D 64 49 05 0D
+0A 20 20 20 AC 45 0E 4D E8 47 05 41 42 4F 52 54
+3F 40 80 1C C6 3F B2 40 B2 54 B0 54 B2 40 4E 48
+4C 48 B2 40 B4 48 B2 48 B2 40 56 49 54 49 B2 40
+B0 47 AE 47 38 40 0A 00 82 48 DC 1D 88 43 E8 1D
+28 83 FC 2F B2 40 0A 00 DC 1D 30 41 8F 93 02 00
+03 20 2F 52 3E 4F 30 4D B2 40 82 48 80 48 B0 12
+72 4D A2 B3 FC 05 FD 27 B2 40 11 00 EE 05 D2 C3
+22 02 92 C3 FC 05 38 40 A0 AA 39 42 03 43 19 83
+FD 23 18 83 FA 23 92 B3 FC 05 F3 23 0D 12 87 12
+64 49 04 1B 5B 37 6D 00 24 49 2C 44 DE 1D EA 44
+4C 44 B0 45 06 4E 64 49 05 6C 69 6E 65 3A 24 49
+38 45 26 47 C2 48 24 49 64 49 04 1B 5B 30 6D 00
+24 49 2A 54 82 49 60 4D 5A 4D 86 41 42 4F 52 54
+22 00 0D 12 87 12 A0 49 2C 44 9C 4D 0C 4C 22 44
+40 4A 01 27 0D 12 87 12 20 46 E8 49 46 4A B0 45
+44 4E 22 44 A8 4C 3E 46 81 5C 92 42 C0 1D C4 1D
+30 4D 00 00 81 5B 82 43 BE 1D 30 4D 48 4E 01 5D
+B2 43 BE 1D 30 4D 54 4E 83 5B 27 5D 0D 12 87 12
+34 4E 2C 44 2C 44 0C 4C 0C 4C 22 44 BE 4F 02 00
+3E 4F 30 4D 6E 47 82 49 53 00 0D 12 87 12 38 46
+EA 44 B0 45 A0 4E 6C 4E 2C 44 7C 4E 0C 4C 22 44
+34 4E 7C 4E 22 44 86 4E 09 49 4D 4D 45 44 49 41
+54 45 1A 42 B6 1D FA D0 80 00 00 00 30 4D 9C 49
+87 52 45 43 55 52 53 45 19 42 C6 1D 99 42 BA 1D
+00 00 A2 53 C6 1D 30 4D EC 4C 88 50 4F 53 54 50
+4F 4E 45 00 0D 12 87 12 20 46 E8 49 46 4A 4C 44
+B0 45 44 4E 68 45 B0 45 06 4F 2C 44 2C 44 0C 4C
+0C 4C 2C 44 0C 4C 0C 4C 22 44 82 9F BC 1D 40 25
+0D 12 87 12 64 49 0F 73 74 61 63 6B 20 6D 69 73
+6D 61 74 63 68 21 A8 4D 68 4E 81 3B 82 93 BE 1D
+8C 27 0D 12 87 12 2C 44 22 44 0C 4C 0A 4F 56 4E
+22 44 2A 4F 07 3A 4E 4F 4E 41 4D 45 2F 83 8F 4E
+00 00 1E 42 C6 1D 0A 4E 39 40 00 02 08 49 28 53
+B0 12 B4 4F BA 40 0D 12 FC FF BA 40 87 12 FE FF
+B2 43 BE 1D 82 4F BC 1D 30 4D 44 4F 01 3A 30 12
+64 4F 0D 12 87 12 C2 49 20 46 E8 49 8E 4F 08 4E
+7A 4E 5A D3 5A 53 0A 58 19 42 DA 1D 6E 4E 3E F0
+1E 00 09 5E 3E 4F 3D 41 BA 40 30 40 00 00 BA 40
+78 4F 02 00 82 48 B6 1D 82 49 B8 1D 82 4A BA 1D
+2A 52 82 4A C6 1D 30 41 E2 49 08 56 41 52 49 41
+42 4C 45 00 B0 12 82 4F BA 40 86 12 FC FF DC 3C
+4E 4C 08 43 4F 4E 53 54 41 4E 54 00 B0 12 82 4F
+BA 40 85 12 FC FF 8A 4E FE FF 3E 4F CD 3C E2 4F
+06 43 52 45 41 54 45 00 B0 12 82 4F BA 40 85 12
+FC FF 8A 4A FE FF C0 3C BE 4C 05 44 4F 45 53 3E
+1A 42 BA 1D BA 40 84 12 00 00 8A 4D 02 00 3D 41
+30 4D 1A 50 05 44 45 46 45 52 B0 12 82 4F AC 3C
+A6 4A 05 3E 42 4F 44 59 2E 52 30 4D 00 50 07 43
+4F 4D 50 41 52 45 0C 4E 38 4F 3B 4F 39 4F 0E 4B
+0E 5C 0C 24 1B 83 07 30 1C 83 07 30 19 53 F9 98
+FF FF F5 27 02 2C 3E 43 30 4D 1E 43 30 4D 7C 4F
+86 5B 54 48 45 4E 5D 00 30 4D 80 50 86 5B 45 4C
+53 45 5D 00 0D 12 87 12 2C 44 01 00 20 46 E8 49
+54 4C 3C 44 B0 45 00 51 82 44 82 44 64 49 04 5B
+49 46 5D 00 56 50 BA 45 C2 50 46 49 2E 45 AC 45
+F8 50 82 44 82 44 64 49 06 5B 45 4C 53 45 5D 00
+56 50 BA 45 E6 50 46 49 38 45 3C 44 B0 45 F8 50
+2E 45 AC 45 F8 50 64 49 06 5B 54 48 45 4E 5D 00
+56 50 BA 45 F8 50 38 45 4C 44 BA 45 9C 50 22 44
+46 49 64 49 05 0D 0A 6B 6F 20 24 49 CE 47 62 4C
+AC 45 9C 50 8C 50 84 5B 49 46 5D 00 0E 93 3E 4F
+B9 27 30 4D 16 51 89 5B 44 45 46 49 4E 45 44 5D
+0D 12 87 12 20 46 E8 49 46 4A 64 44 22 44 26 51
+8B 5B 55 4E 44 45 46 49 4E 45 44 5D 0D 12 87 12
+30 51 5C 45 22 44 58 51 3D 41 B2 4E 0E 18 A2 4E
+0C 18 3E 4F 6C 3D 1E 4C 06 4D 41 52 4B 45 52 00
+B0 12 82 4F BA 40 84 12 FC FF BA 40 56 51 FE FF
+9A 42 C8 1D 00 00 28 83 8A 48 02 00 A2 52 C6 1D
+18 42 B6 1D 19 42 B8 1D A8 49 FE FF 89 48 00 00
+30 4D A8 4E 82 49 46 00 2F 83 8F 4E 00 00 1E 42
+C6 1D A2 52 C6 1D BE 40 B0 45 00 00 2E 53 30 4D
+34 50 84 45 4C 53 45 00 A2 52 C6 1D 1A 42 C6 1D
+BA 40 AC 45 FC FF 8E 4A 00 00 2A 83 0E 4A 30 4D
+1E 49 84 54 48 45 4E 00 9E 42 C6 1D 00 00 3E 4F
+30 4D 4E 50 85 42 45 47 49 4E 30 40 74 47 E2 51
+85 55 4E 54 49 4C 39 40 B0 45 A2 52 C6 1D 1A 42
+C6 1D 8A 49 FC FF 8A 4E FE FF 3E 4F 30 4D 1A 4E
+85 41 47 41 49 4E 39 40 AC 45 EF 3F CA 4F 85 57
+48 49 4C 45 0D 12 87 12 A8 51 70 44 22 44 C0 4E
+86 52 45 50 45 41 54 00 0D 12 87 12 26 52 E8 51
+22 44 C2 51 82 44 4F 00 2F 83 8F 4E 00 00 A2 53
+C6 1D 1E 42 C6 1D BE 40 C0 45 FE FF A2 53 00 1C
+1A 42 00 1C 8A 43 00 00 30 4D 68 51 84 4C 4F 4F
+50 00 39 40 E2 45 A2 52 C6 1D 1A 42 C6 1D 8A 49
+FC FF 8A 4E FE FF 1E 42 00 1C A2 83 00 1C 2E 4E
+0E 93 03 24 8E 4A 00 00 F6 3F 3E 4F 30 4D A8 47
+85 2B 4C 4F 4F 50 39 40 D0 45 E5 3F 7C 52 85 4C
+45 41 56 45 1A 42 C6 1D BA 40 F2 45 00 00 BA 40
+AC 45 02 00 B2 50 06 00 C6 1D A2 53 00 1C 2A 52
+19 42 00 1C 89 4A 00 00 30 4D BE 52 04 4D 4F 56
+45 00 0A 4E 38 4F 39 4F 3E 4F 0A 93 11 24 08 99
+0F 24 06 2C F8 49 00 00 18 53 1A 83 FB 23 30 4D
+08 5A 09 5A 19 83 18 83 E8 49 00 00 1A 83 FA 23
+30 4D 2E 52 0A 56 4F 43 41 42 55 4C 41 52 59 00
+0D 12 87 12 08 50 2C 44 10 00 2C 44 00 00 C0 45
+2C 44 00 00 0C 4C E2 45 40 53 74 47 2C 44 C8 1D
+3C 44 EA 44 0C 4C F2 44 20 50 2C 44 CA 1D F2 44
+22 44 32 4E 05 46 4F 52 54 48 84 12 5A 53 B0 5D
+26 57 26 5F 64 53 82 56 B0 52 EE 5E 1A 5E 38 5E
+68 54 FC 5E 42 5E 00 00 A4 5D 5E 4E 2E 5E 00 00
+20 52 04 41 4C 53 4F 00 3A 40 0C 00 39 40 CA 1D
+38 40 CC 1D B5 3F DA 4E 08 50 52 45 56 49 4F 55
+53 00 3A 40 0E 00 39 40 CC 1D 38 40 CA 1D A2 3F
+CE 49 04 4F 4E 4C 59 00 82 43 CC 1D 30 4D 54 52
+0B 44 45 46 49 4E 49 54 49 4F 4E 53 92 42 CA 1D
+DA 1D 30 4D 6A 53 C8 53 DC 53 EC 53 3A 4E 82 4A
+C8 1D 2E 4E 82 4E C6 1D 3D 40 10 00 09 4A 08 49
+29 83 18 48 FE FF 0E 98 FC 2B 89 48 00 00 1D 83
+F6 23 2A 4A 0A 93 F0 23 3E 4F 3D 41 30 4D A8 53
+09 50 57 52 5F 53 54 41 54 45 84 12 E4 53 7E 56
+AE 5F 40 52 09 52 53 54 5F 53 54 41 54 45 92 42
+0E 18 2E 54 92 42 0C 18 30 54 EF 3F 20 54 08 50
+57 52 5F 48 45 52 45 00 92 42 C8 1D 2E 54 92 42
+C6 1D 30 54 30 4D 34 54 08 52 53 54 5F 48 45 52
+45 00 92 42 C8 1D 0E 18 92 42 C6 1D 0C 18 EC 3F
+24 53 04 57 49 50 45 00 39 40 10 00 29 83 B9 43
+80 FF FC 23 B0 12 66 4D B2 40 AE 5F 0C 18 B2 40
+7E 56 0E 18 CC 3F 82 54 04 57 41 52 4D 00 30 40
+B2 54 1E 42 08 18 0D 12 87 12 64 49 06 0D 1B 5B
+37 6D 23 00 24 49 5E 47 64 49 1F 46 61 73 74 46
+6F 72 74 68 20 56 32 30 36 20 28 43 29 4A 2E 4D
+2E 54 68 6F 6F 72 65 6E 73 20 24 49 2C 44 30 FF
+74 47 20 45 26 47 64 49 0B 62 79 74 65 73 20 66
+72 65 65 20 AE 4D F4 51 04 43 4F 4C 44 00 B2 40
+04 A5 20 01 B2 40 88 5A 5C 01 92 43 04 02 B2 40
+FE FF 02 02 A2 83 06 02 92 D3 24 02 B2 D3 26 02
+B2 43 22 02 B2 43 42 02 B2 D3 46 02 B2 43 62 02
+B2 D3 66 02 B2 40 80 00 84 02 B2 40 7F FF 82 02
+B2 D0 7F FF 86 02 F2 43 22 03 F2 D3 26 03 F2 40
+A5 00 41 01 F2 40 10 00 40 01 D2 43 41 01 F2 40
+A5 00 61 01 B2 40 48 00 62 01 82 43 66 01 39 40
+00 01 B2 40 33 00 64 01 D2 43 61 01 92 D2 9E 01
+08 18 A2 93 08 18 01 24 59 07 38 40 59 14 18 83
+FE 23 19 83 FA 23 B2 42 B0 01 F2 D0 10 00 2A 03
+F2 C0 40 00 A2 04 39 40 3A 00 29 83 B9 40 14 55
+C6 FF FB 23 B2 40 54 48 E4 FF B2 40 18 00 0A 18
+39 40 00 08 29 83 89 43 00 1C FC 23 31 40 E0 1C
+3F 40 80 1C 37 40 22 44 36 40 B4 44 35 40 00 44
+34 40 0C 44 B2 40 0A 00 DC 1D B2 43 B4 1D 92 C3
+30 01 18 42 08 18 F2 B0 10 00 20 02 04 20 38 E3
+18 53 82 48 08 18 B2 40 81 00 E0 05 92 42 02 18
+E6 05 92 42 04 18 E8 05 F2 D0 30 00 2A 02 92 C3
+E0 05 92 D3 FA 05 3D 40 4C 56 38 90 0A 00 24 27
+38 90 16 00 21 2F 28 93 FA 22 EF 26 AE 54 92 53
+09 41 53 53 45 4D 42 4C 45 52 84 12 5A 53 7E 5C
+EC 5C 32 5C 56 5D F8 5B 7E 5D 12 59 00 00 EE 5B
+A2 5C 50 5C 90 5C 22 5A 00 00 00 00 8E 5D 8E 53
+A4 51 85 48 49 32 4C 4F 0D 12 87 12 74 47 BC 51
+0C 4C 56 4E 98 53 5A 56 22 44 08 55 04 43 4F 44
+45 00 B0 12 82 4F A2 82 C6 1D 0D 12 87 12 74 4F
+AC 45 94 56 00 00 07 45 4E 44 43 4F 44 45 0D 12
+87 12 B2 53 0A 4F 22 44 50 56 03 41 53 4D 92 42
+DA 1D E0 1D B2 40 5E 56 DA 1D E3 3F B6 56 06 45
+4E 44 41 53 4D 00 92 42 E0 1D DA 1D E8 3F 00 00
+05 43 4F 4C 4F 4E 1A 42 C6 1D BA 40 0D 12 00 00
+BA 40 87 12 02 00 A2 52 C6 1D B2 43 BE 1D 30 40
+B2 53 00 00 05 4C 4F 32 48 49 A2 83 C6 1D 1A 42
+C6 1D EE 3F 9C 56 07 43 4F 44 45 4E 4E 4D 0D 12
+87 12 4C 4F 56 4E 38 57 3D 41 2A 82 82 4A C6 1D
+B4 3F 38 40 C0 1D 39 48 2A 48 09 5A 1A 52 C4 1D
+09 9A 03 24 7E 9A FC 27 1A 83 0E 4A 2A 88 82 4A
+C4 1D 30 4D 1C 15 87 12 E8 49 46 4A BA 45 78 57
+00 4B B0 45 44 4E 9A 57 7A 57 29 4E 39 90 86 12
+02 20 2E 53 0A 3C 39 90 85 12 03 20 1E 4E 02 00
+04 3C 39 90 84 12 01 20 2E 52 1B 17 30 41 3E 40
+28 00 B0 12 64 57 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 40 29 00 1C 15 12 12 C4 1D 92 53 C4 1D
+87 12 E8 49 00 4B B0 45 D6 57 CC 57 21 53 3E 90
+10 00 84 2D E2 2B D8 57 B2 41 C4 1D DE 3F 0D 12
+87 12 20 46 42 57 E8 57 0C 43 1B 42 C6 1D A2 53
+C6 1D 0A 4E 3E 4F FA 90 23 00 00 00 2D 20 92 53
+C4 1D B0 12 64 57 0E 93 03 20 3C 40 00 03 21 3C
+1E 93 03 20 3C 40 10 03 1C 3C 2E 93 03 20 3C 40
+20 03 17 3C 2E 92 03 20 3C 40 20 02 12 3C 3E 92
+03 20 3C 40 30 02 0D 3C 3E 93 03 20 3C 40 30 03
+08 3C 3C 40 30 00 19 42 C6 1D A2 53 C6 1D 89 4E
+00 00 3E 4F 3D 41 30 4D FA 90 26 00 00 00 07 20
+3C 40 10 02 92 53 C4 1D B0 12 64 57 EC 3F FA 90
+40 00 00 00 16 20 3C 40 20 00 92 53 C4 1D B0 12
+B6 57 0C 20 3C 50 10 00 3E 40 2B 00 B0 12 B6 57
+92 92 C0 1D C4 1D 02 24 92 53 C4 1D 8E 10 0C 5E
+D8 3F B0 12 B6 57 FA 23 3C 50 10 00 B0 12 9E 57
+EF 3F 0D 12 87 12 20 46 42 57 BC 58 FE 90 26 00
+00 00 3E 40 20 00 03 20 3C 50 82 00 CB 3F B0 12
+B6 57 E5 23 3C 50 80 00 B0 12 9E 57 E0 3F 44 48
+04 52 45 54 49 00 0D 12 87 12 2C 44 00 13 0C 4C
+22 44 2C 44 2C 00 DE 57 B2 58 FC 58 2E 4E 0E DC
+09 4B A5 3F 14 57 03 4D 4F 56 84 12 F2 58 00 40
+06 59 05 4D 4F 56 2E 42 84 12 F2 58 40 40 00 00
+03 41 44 44 84 12 F2 58 00 50 20 59 05 41 44 44
+2E 42 84 12 F2 58 40 50 2C 59 04 41 44 44 43 00
+84 12 F2 58 00 60 3A 59 06 41 44 44 43 2E 42 00
+84 12 F2 58 40 60 E0 58 04 53 55 42 43 00 84 12
+F2 58 00 70 58 59 06 53 55 42 43 2E 42 00 84 12
+F2 58 40 70 66 59 03 53 55 42 84 12 F2 58 00 80
+76 59 05 53 55 42 2E 42 84 12 F2 58 40 80 F0 56
+03 43 4D 50 84 12 F2 58 00 90 90 59 05 43 4D 50
+2E 42 84 12 F2 58 40 90 DE 56 04 44 41 44 44 00
+84 12 F2 58 00 A0 AA 59 06 44 41 44 44 2E 42 00
+84 12 F2 58 40 A0 9C 59 03 42 49 54 84 12 F2 58
+00 B0 C8 59 05 42 49 54 2E 42 84 12 F2 58 40 B0
+D4 59 03 42 49 43 84 12 F2 58 00 C0 E2 59 05 42
+49 43 2E 42 84 12 F2 58 40 C0 EE 59 03 42 49 53
+84 12 F2 58 00 D0 FC 59 05 42 49 53 2E 42 84 12
+F2 58 40 D0 00 00 03 58 4F 52 84 12 F2 58 00 E0
+16 5A 05 58 4F 52 2E 42 84 12 F2 58 40 E0 48 59
+03 41 4E 44 84 12 F2 58 00 F0 30 5A 05 41 4E 44
+2E 42 84 12 F2 58 40 F0 20 46 DE 57 4E 5A 0A 4C
+3C F0 70 00 8A 10 3A F0 0F 00 0C DA 4F 3F 82 59
+03 52 52 43 84 12 48 5A 00 10 60 5A 05 52 52 43
+2E 42 84 12 48 5A 40 10 6C 5A 04 53 57 50 42 00
+84 12 48 5A 80 10 7A 5A 03 52 52 41 84 12 48 5A
+00 11 88 5A 05 52 52 41 2E 42 84 12 48 5A 40 11
+94 5A 03 53 58 54 84 12 48 5A 80 11 00 00 04 50
+55 53 48 00 84 12 48 5A 00 12 AE 5A 06 50 55 53
+48 2E 42 00 84 12 48 5A 40 12 08 5A 04 43 41 4C
+4C 00 84 12 48 5A 80 12 1A 53 0E 4A 0D 12 87 12
+5E 47 64 49 0D 6F 75 74 20 6F 66 20 62 6F 75 6E
+64 73 A8 4D 20 46 42 57 FA 5A 0C 43 1B 42 C6 1D
+A2 53 C6 1D 92 53 C4 1D 3E 40 2C 00 1C 15 87 12
+E8 49 00 4B B0 45 44 4E 1A 5B 1B 17 87 12 B2 58
+22 5B 0A 4E 3E 4F 1A 83 D7 33 29 4E 59 0E 0A 28
+08 4C 59 0A 01 28 0C 8A 08 8A 38 90 10 00 CC 2F
+5A 0E 8B 3F 2A 92 C8 2F 8A 10 5A 06 86 3F A2 5A
+04 52 52 43 4D 00 84 12 F4 5A 50 00 50 5B 04 52
+52 41 4D 00 84 12 F4 5A 50 01 5E 5B 04 52 4C 41
+4D 00 84 12 F4 5A 50 02 6C 5B 04 52 52 55 4D 00
+84 12 F4 5A 50 03 BC 5A 05 50 55 53 48 4D 84 12
+F4 5A 00 15 88 5B 04 50 4F 50 4D 00 84 12 F4 5A
+00 17 85 12 00 3C 7A 5B 03 53 3E 3D 85 12 00 38
+A8 5B 02 53 3C 00 85 12 00 34 96 5B 03 30 3E 3D
+85 12 00 30 BC 5B 02 30 3C 00 85 12 00 30 00 00
+02 55 3C 00 85 12 00 2C D0 5B 03 55 3E 3D 85 12
+00 28 C6 5B 03 30 3C 3E 85 12 00 24 E4 5B 02 30
+3D 00 85 12 00 20 00 00 02 49 46 00 1A 42 C6 1D
+8A 4E 00 00 A2 53 C6 1D 0E 4A 30 4D DA 5B 04 54
+48 45 4E 00 1A 42 C6 1D 08 4E 3E 4F 09 48 29 53
+0A 89 0A 11 3A 90 00 02 58 2F 88 DA 00 00 30 4D
+B8 59 04 45 4C 53 45 00 1A 42 C6 1D BA 40 00 3C
+00 00 A2 53 C6 1D 2F 83 8F 4A 00 00 E3 3F 0E 5C
+05 55 4E 54 49 4C 3A 4F 08 4E 3E 4F 19 42 C6 1D
+2A 83 0A 89 0A 11 3A 90 00 FE 37 3B 3A F0 FF 03
+08 DA 89 48 00 00 A2 53 C6 1D 30 4D 3C 5A 05 41
+47 41 49 4E 0D 12 87 12 A2 5B 56 5C 22 44 00 00
+05 57 48 49 4C 45 0D 12 87 12 FC 5B 70 44 22 44
+B2 5B 06 52 45 50 45 41 54 00 0D 12 87 12 A2 5B
+56 5C 14 5C 22 44 B8 5C 3D 41 2E 4E 08 4E 3E 4F
+2A 48 0A 93 88 43 00 00 C7 23 98 42 C6 1D 00 00
+30 4D CC 5A 03 42 57 31 84 12 B6 5C E2 1D D4 5C
+03 42 57 32 84 12 B6 5C E4 1D E0 5C 03 42 57 33
+84 12 B6 5C E6 1D F8 5C 3D 41 1A 42 C6 1D 2E 4E
+28 4E 8E 43 00 00 08 93 88 23 BA 4F 00 00 A2 53
+C6 1D 8E 4A 00 00 3E 4F 30 4D 00 00 03 46 57 31
+84 12 F6 5C E8 1D 1C 5D 03 46 57 32 84 12 F6 5C
+EA 1D 28 5D 03 46 57 33 84 12 F6 5C EC 1D 3E 90
 00 30 07 24 3E E0 00 04 3E B0 00 10 02 24 3E E0
-00 08 30 4D 74 5D 04 47 4F 54 4F 00 0D 12 87 12
-E2 5B 60 4E 26 4C 22 44 00 00 05 3F 47 4F 54 4F
-0D 12 87 12 7E 5D 60 4E 26 4C 22 44 00 00 03 4A
-4D 50 0D 12 87 12 60 4E C4 5C 22 44 AA 5D 04 3F
-4A 4D 50 00 0D 12 87 12 7E 5D 60 4E 70 44 96 5C
-22 44 42 51 07 7B 54 4F 4F 4C 53 7D 30 4D E2 56
-03 41 4E 44 3E FF 30 4D C6 53 02 2E 53 00 8F 4E
+00 08 30 4D 34 5D 04 47 4F 54 4F 00 0D 12 87 12
+A2 5B 34 4E 02 4C 22 44 00 00 05 3F 47 4F 54 4F
+0D 12 87 12 3E 5D 34 4E 02 4C 22 44 00 00 03 4A
+4D 50 0D 12 87 12 34 4E 84 5C 22 44 6A 5D 04 3F
+4A 4D 50 00 0D 12 87 12 3E 5D 34 4E 70 44 56 5C
+22 44 40 51 07 7B 54 4F 4F 4C 53 7D 30 4D CA 56
+03 41 4E 44 3E FF 30 4D C2 53 02 2E 53 00 8F 4E
 FE FF 0E 4F 2E 83 8F 4E FA FF 3E 40 80 1C 2E 83
 8F 4E FC FF 3F 80 06 00 2E 8F 0E 11 0D 12 87 12
-2C 44 3C 00 D2 48 5E 47 2C 44 08 00 D2 48 2C 44
-3E 00 D2 48 08 49 82 44 82 44 8E 45 BA 45 46 5E
+2C 44 3C 00 B0 48 5E 47 2C 44 08 00 B0 48 2C 44
+3E 00 B0 48 EC 48 82 44 82 44 8E 45 BA 45 06 5E
 5A 44 5A 44 22 44 C0 45 F8 45 EA 44 26 47 2C 44
-02 00 D0 45 48 5E 22 44 FA 5D 03 2E 52 53 8F 4E
-FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F CA 4A 01 3F
-2E 4E 30 40 26 47 52 54 03 50 41 44 85 12 E4 1C
-0E 55 05 57 4F 52 44 53 0D 12 87 12 84 49 2C 44
-03 00 1E 49 2C 44 D0 1D EA 44 7C 5E 2C 44 10 00
-3C 44 18 45 F6 52 2C 44 00 00 3C 44 2C 44 10 00
-3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 7C 5E
-18 45 EA 44 A4 45 B0 45 D8 5E 5A 44 5A 44 F8 45
-3C 44 7C 5E 18 45 EA 44 2C 44 02 00 D0 45 BA 5E
-4C 44 B0 45 1A 5F 3C 44 2C 44 02 00 20 45 EA 44
-92 44 7C 5E 18 45 F2 44 3C 44 78 4C 2C 44 7F 00
-F4 5D 40 49 00 45 2C 44 0F 00 F4 5D 2C 44 10 00
-70 44 20 45 1E 49 AC 45 A6 5E 5A 44 22 44 F0 52
-03 4D 41 58 2E 9F 07 38 2F 53 30 4D 20 5F 03 4D
-49 4E 2E 9F F9 3B 3E 4F 30 4D 04 52 03 55 2E 52
+02 00 D0 45 08 5E 22 44 BA 5D 03 2E 52 53 8F 4E
+FE FF 8F 41 FA FF 3E 40 E0 1C D2 3F 42 50 01 3F
+2E 4E 30 40 26 47 4E 54 03 50 41 44 85 12 E4 1C
+A8 54 05 57 4F 52 44 53 0D 12 87 12 52 49 2C 44
+03 00 02 49 2C 44 CA 1D EA 44 3C 5E 2C 44 10 00
+3C 44 18 45 F2 52 2C 44 00 00 3C 44 2C 44 10 00
+3C 44 18 45 2C 44 00 00 C0 45 3C 44 F8 45 3C 5E
+18 45 EA 44 A4 45 B0 45 98 5E 5A 44 5A 44 F8 45
+3C 44 3C 5E 18 45 EA 44 2C 44 02 00 D0 45 7A 5E
+4C 44 B0 45 DA 5E 3C 44 2C 44 02 00 20 45 EA 44
+92 44 3C 5E 18 45 F2 44 3C 44 54 4C 2C 44 7F 00
+B4 5D 24 49 00 45 2C 44 0F 00 B4 5D 2C 44 10 00
+70 44 20 45 02 49 AC 45 66 5E 5A 44 22 44 EC 52
+03 4D 41 58 2E 9F 07 38 2F 53 30 4D E0 5E 03 4D
+49 4E 2E 9F F9 3B 3E 4F 30 4D 00 52 03 55 2E 52
 0D 12 87 12 A8 44 42 46 2C 44 00 00 A2 46 D4 46
-F0 46 B4 44 82 44 20 45 2C 44 00 00 24 5F 1E 49
-40 49 22 44 D4 53 04 44 55 4D 50 00 0D 12 12 12
-E2 1D B2 40 10 00 E2 1D 2E 5F 87 12 70 44 82 44
+F0 46 B4 44 82 44 20 45 2C 44 00 00 E4 5E 02 49
+24 49 22 44 D0 53 04 44 55 4D 50 00 0D 12 12 12
+DC 1D B2 40 10 00 DC 1D 2E 5F 87 12 70 44 82 44
 82 44 26 47 2C 44 01 00 20 45 26 47 2C 44 FE FF
-F4 5D C0 45 84 49 F8 45 2C 44 07 00 40 5F 08 49
+B4 5D C0 45 52 49 F8 45 2C 44 07 00 00 5F EC 48
 F8 45 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45
-2C 44 03 00 40 5F E2 45 AC 5F 08 49 08 49 F8 45
+2C 44 03 00 00 5F E2 45 6C 5F EC 48 EC 48 F8 45
 2C 44 10 00 18 45 F8 45 C0 45 F8 45 00 45 2C 44
-7E 00 32 5F 20 46 24 5F D2 48 E2 45 CA 5F 2C 44
-10 00 D0 45 94 5F B4 44 2C 46 F2 44 22 44
+7E 00 F2 5E 20 46 E4 5E B0 48 E2 45 8A 5F 2C 44
+10 00 D0 45 54 5F B4 44 2C 46 F2 44 22 44
 @FFFE
-26 55
+14 55
 q
index af3b018..d876f5a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -9,19 +9,23 @@ For only 3 kbytes in addition, you have the primitives to access the sd\_card FA
 It works with all SD CARD memories from 64MB to 64GB. Read or write a byte is done in less than a microsecond @ 16MHz.
 This enables to make a fast data logger with a small footprint as a MSP430FR5738 QFN24. To compare with a LPC800 ARM entry-level...
 
-With all options its size is about 10kB. 
+With all core options its size is under 9.5kB. 
 
        Tested on MSP-EXP430{FR5969,FR5994,FR6989,FR4133,FR2355,FR2433} launchpads and CHIPSTICKFR2433,
-    at 0.5, 1, 2, 4, 8, 12, 16 MHz plus 20MHz and 24MHz for FR2355,FR573x devices.
+    at 0.5, 1, 2, 4, 8, 12, 16 MHz plus 20MHz and 24MHz for FR23xx,FR57xx devices.
 
     For the moment, the IDE works under WINDOWS...
        
-    Files launchpad_5Mbds.txt are 16threads vocabularies 16MHz executables, with 5MBds "4 WIRES" terminal,
-    usable with PL2303HXD only.
+    Files launchpad_921600bds.txt are 16threads vocabularies 16MHz executables, with
+    "3 WIRES" (XON/XOFF flow control) and "4 WIRES" (Hardware flow control) 921600Bds terminal.
+
     Launchpad_115200.txt files are same except 115200Bds for unlucky linux men without TERATERM. 
     For the launchpad MSP-EXP430FR5994 with SD_CARD, full version is available. For others, you must 
     recompile forthMSP430FR.asm with SD_CARD_LOADER and SD_CARD_READ_WRITE switches turned ON
     (uncomment their line).
+    
+    if you use a cable with a PL2303HXD, terminal baudrate can be boosted on the fly to 5Mbds! 
+    Try it by downloading MSP430-FORTH\CHNGBAUD.f. 
 
     Once the Fast Forth code is loaded in the target FRAM memory, you can add it assembly code or 
     FORTH code, or both, by downloading your source files that embedded Fast Forth interprets and
@@ -32,7 +36,7 @@ With all options its size is about 10kB.
     source file.f in a targeted source file.4th ready to download.
     A set of .bat files is furnished to do this automatically. See it all in the \MSP430-FORTH folder.
 
-       The download, interpretation and compilation of a source file.4th is done at a throughput
+    The download, interpretation and compilation of a source file.4th is done at a throughput
     of 40/80/120 kbytes/sec with a 8/16/24 MHz clock. 
     Considering a ratio 5/1, that of the compiled code is 8/16/24 kbytes/sec.
 
@@ -48,6 +52,72 @@ With all options its size is about 10kB.
 What is new ?
 -------------
 
+    FastForth V206: just 6kb for 16MHz + 5Mbds terminal + macro assembler + conditional compiler!
+                 -       - 
+
+        The terminal baudrate can be changed on the fly. Download MSP430-FORTH\CHNGBAUD.f to do.
+
+        forthMSP430FR.asm: 
+
+                the DTC model chosen for Fast forth is 2. The others become experimental.
+
+                Bugs corrected: ALSO and :NONAME (option).
+
+                The structure of primary DEFERred words as KEY,EMIT,CR,WARM... is modified,
+                                 -------
+                the address of their default execute part, without name, can be found with:
+                ' <name> >BODY
+
+                    example, after this entry: ' DROP IS KEY
+                    KEY (or ' KEY EXECUTE) runs DROP i.e. the redirection made by IS,
+                    ' KEY >BODY EXECUTE runs KEY, the default action at the BODY address.
+
+                    and: ' KEY >BODY IS KEY
+                    restore the default action of this primary DEFERred word.
+                                                       -------
+
+                    WARNING! you cannot do that with words created by DEFER !
+                    DEFER creates only secondary DEFERred words, without BODY !
+                                       ---------
+
+                    to build a primary DEFERred FORTH word, 
+                               -------
+                    you must create a DEFERred word followed by
+                    a :NONAME definition, ended by ; IS <name>:
+
+                        DEFER truc
+
+                        :NONAME         \ does nothing (for the example)
+                            DUP
+                            DROP
+                        ; IS truc
+
+                    The advantage of creating primary DEFERred words is to set their
+                    default state, enabling to reinitialize them easily.
+
+        forthMSP430FR_ASM.asm:
+
+                All assembly code is revamped.
+
+                POPM and PUSHM instructions now follow the TI syntax :-(
+
+                Added CODENNM as assembly counterpart of :NONAME (option)
+
+                    to build the primary DEFERred assembly word "machin" :
+                                 -------
+
+                        DEFER machin
+
+                        CODENNM
+                            NOP2        \ assembly instruction
+                            NOP3        \ assembly instruction
+                            MOV @IP+,PC \ mandatory before ENDCODE
+                        ENDCODE IS machin
+
+                        you can obviously mix LOW/HIGH levels in CODENNM
+                        and :NONAME areas...
+
+
     FastForth V205
         Added MSP-EXP430FR2355 launchpad
         Added word :NONAME (option).
@@ -58,7 +128,7 @@ What is new ?
         Words AND, OR, XOR are moved as complement in ANS_COMP.f file.
         Simplified preprocessor files in \config\gema\ folder: only two for one target:
             one for the device, other for the target (launchpad or user application/module).
-            and similarly with the assembly files: device.inc and target.asm, for compiling FastForth.
+            and similarly with the assembly files: Device.inc and Target.asm, for compiling FastForth.
         Corrected startup time in target.asm files.
         Modified Clock config in MSP_EXP430FR2433.asm and MSP_EXP430FR4133.ASM, allowing clock modulation.
 
@@ -1298,7 +1368,7 @@ ANNEXE
 
 The embedded assembler don't recognize the (useless) TI's symbolic addressing mode: ADD.B EDE,TONI.
 
-REGISTERS correspondence (preprocessor gema.exe allow you to use FASTFORTH registers's names).
+REGISTERS correspondence (the preprocessor gema.exe allow you to use FASTFORTH or TI registers's names).
 
     embedded ASM    TI      FASTFORTH   comment 
                              
@@ -1322,8 +1392,8 @@ REGISTERS correspondence (preprocessor gema.exe allow you to use FASTFORTH regis
 REGISTERS use
 
     The FASTFORTH registers rDOCOL, rDOVAR, rDOCON and rDODOES must be preserved, 
-    PUSHM R7,R4 before use and POPM R4,R7 after.
-    don't use R3 and use R2 only with register addressing mode.
+    PUSHM #4,R7 before use and POPM #4,R7 after.
+    don't use R3 and use R2 only with BIC, BIT, BIS instructions in register mode.
 
 
 PARAMETERS STACK use
@@ -1336,12 +1406,10 @@ PARAMETERS STACK use
         SUB #2,PSP                  \ insert a empty 2th cell
         MOV TOS,0(PSP)              \ fill this 2th cell with first cell
         MOV <what you want>,TOS     \ MOV or MOV.B <what you want>,TOS ; i.e. update first cell
-        ...
 
     to pop one cell from the PSP stack :
 
         MOV @PSP+,TOS               \ first cell TOS is lost and replaced by the 2th.
-        ...
 
     don't never pop a byte with instruction MOV.B @PSP+, because generates a stack misalignement...
 
@@ -1352,40 +1420,33 @@ RETURN STACK use
     to push one cell on the RSP stack :
 
         PUSH <what you want>        \
-        ...
 
     to pop one cell from the RSP stack :
 
         MOV @RSP+,<where you want>   \
-        ...
 
     don't never pop a byte with instruction MOV.B @RSP+, ...
 
 
     to push multiple registers on the RSP stack :
 
-        PUSHM Rx,Ry                 \ x > y 
-        ...
+        PUSHM #n,Rx                 \  with 0 <= x-(n-1) < 16
 
     to pop multiple registers from the RSP stack :
 
-        POPM Ry,Rx                  \ y < x
-        ...
-
-CPUx instructions PUSHM / POPM (my own syntax, not the TI's one, too bad :-)
-
-    PUSHM order : PSP,TOS, IP,   S,   T,   W,  X,  Y, R7, R6, R5, R4
-    PUSHM order : R15,R14,R13, R12, R11, R10, R9, R8, R7, R6, R5, R4
+        POPM #n,Rx                  \  with 0 <= x-(n-1) < 16
 
-    example : PUSHM IP,Y    \ push R13, R12, R11, R10, R9, R8 registers onto the stack RSP
+    PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+    PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
 
+    example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
 
-    POPM  order : R4, R5, R6, R7,  Y,  X,  W,   T,  S, IP,TOS,PSP
-    POPM  order : R4, R5, R6, R7, R8, R9, R10,R11,R12,R13,R14,R15
+    POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR, rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+    POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,   R7 , R8, R9,R10,R11,R12,R13,R14,R15
 
-    example : POPM Y,IP     \ restore R8, R9, R10,R11,R12,R13 registers from the stack RSP
+    example : POPM #6,IP   pulls Y,X,W,T,S,IP registers from return stack
 
-    error occurs if bad order (PUSHM Y,IP for example)
+    error occurs if n is out of bounds
 
 
 CPUx instructions RRCM,RRAM,RLAM,RRUM
similarity index 78%
rename from TERMINALBAUDRATE.asm
rename to TERMINALBAUDRATE.inc
index ecca1d1..d7f1253 100644 (file)
@@ -7,36 +7,36 @@
 ; Configure UART_TERM @ 38400 bauds / 1MHz
 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,    &TERMBRW
-            MOV.W   #00A1h, &TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00A1h
 
         .CASE 19200  ; PL2303TA baudrate
 ; Configure UART_TERM @ 38400 bauds / 500kHz
 ; N=500000/38400=13.20833 ==> UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.20833)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,     &TERMBRW
-            MOV.W   #1100h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 1100h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 250kHz
 ; N=250000/31250=8 ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0000h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0000h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 250kHz
 ; N=250000/38400=6.5124166... ==> UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.512416)=0xAA
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #0AA00h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0AA00h
 
         .CASE 57600  ; PL2303TA baudrate
 ; Configure UART_TERM @ 57600 bauds / 250kHz
 ; N=250000/57600=4.340277.. ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .ELSECASE
             .error "UART_TERM / 250 kHz : baudrate not implemented"
 ; Configure UART_TERM @ 19200 bauds / 1MHz
 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,    &TERMBRW
-            MOV.W   #0241h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0241h
 
         .CASE 19200
 ; Configure UART_TERM @ 38400 bauds / 1MHz
 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,    &TERMBRW
-            MOV.W   #00A1h, &TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00A1h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 500kHz
 ; N=500000/31250=16 ==> UCOS16=0, UCBR0=int(N)=16, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #16,     &TERMBRW
-            MOV.W   #0000h,&TERMMCTLW
+TERMBRW_INI     .equ 16
+TERMMCTLW_INI   .equ 0000h
 
         .CASE 38400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 38400 bauds / 500kHz
 ; N=500000/38400=13.20833 ==> UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.20833)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,     &TERMBRW
-            MOV.W   #1100h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 1100h
 
         .CASE 57600
 ; Configure UART_TERM @ 115200 bauds / 1MHz
 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 100800  ; PL2303TA baudrate
 ; Configure UART_TERM @ 201600 bauds / 1MHz
 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0FE00h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0FE00h
 
         .CASE 115200
 ; Configure UART_TERM @ 230400 bauds / 1MHz
 ; N=1000000/230400=4.34027... ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 134400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 268800 bauds / 1MHz
 ; N=1000000/134400=3.72024 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.72024)=0xBB
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,     &TERMBRW
-            MOV.W   #0BB00h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0BB00h
 
 ;        .CASE 161280  ; PL2303TA baudrate
 ;; Configure UART_TERM @ 161280 bauds / 500kHz
 ;; N=500000/161280=3.100198 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.100198)=0x08
 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #3,     &TERMBRW
-;            MOV.W   #01100h,&TERMMCTLW
+;TERMBRW_INI     .equ 3
+;TERMMCTLW_INI   .equ 01100h
 
         .ELSECASE
             .error "UART_TERM / 500 kHz : baudrate not implemented"
 ; Configure UART_TERM @ 9600 bauds / 1MHz
 ; N=1000000/9600=104.166... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,    &TERMBRW
-            MOV     #2081h, &TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 2081h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 1MHz
 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,    &TERMBRW
-            MOV.W   #0241h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0241h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 1MHz
 ; N=1000000/31250=32 ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 1MHz
 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,    &TERMBRW
-            MOV.W   #00A1h, &TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00A1h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 1MHz
 ; N=1000000/57600=17.301... ==> UCOS16=0, UCBR0=int(N)=17, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.301)=0x4A
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #17,     &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 
         .CASE 100800  ; PL2303TA baudrate
 ; Configure UART_TERM @ 100800 bauds / 1MHz
 ; N=1000000/100800=9,920634 ==> UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.920634)=0xFD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #9,     &TERMBRW
-            MOV.W   #0FD00h,&TERMMCTLW
+TERMBRW_INI     .equ 9
+TERMMCTLW_INI   .equ 0FD00h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 1MHz
 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 134400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 134400 bauds / 1MHz
 ; N=1000000/134400=7.440476 ==> UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.440476)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #7,     &TERMBRW
-            MOV.W   #05500h,&TERMMCTLW
+TERMBRW_INI     .equ 7
+TERMMCTLW_INI   .equ 05500h
 
         .CASE 161280  ; PL2303TA baudrate
 ; Configure UART_TERM @ 161280 bauds / 1MHz
 ; N=1000000/161280=6.200396 ==> UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #01100h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 01100h
 
         .CASE 201600  ; PL2303TA baudrate
 ; Configure UART_TERM @ 201600 bauds / 1MHz
 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0FE00h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0FE00h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 1MHz
 ; N=1000000/230400=4.34027... ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 1MHz
 ; N=1000000/250000=4 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0000h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0000h
 
         .CASE 268800  ; PL2303TA baudrate
 ; Configure UART_TERM @ 268800 bauds / 1MHz
 ; N=1000000/268800=3.72024 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.72024)=0xBB
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,     &TERMBRW
-            MOV.W   #0BB00h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0BB00h
 
 ;        .CASE 403200  ; PL2303TA baudrate
 ;; Configure UART_TERM @ 403200 bauds / 1MHz
 ;; N=1000000/403200=2.48016 ==> UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.48016)=0x55
 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #2,     &TERMBRW
-;            MOV.W   #05500h,&TERMMCTLW
+;TERMBRW_INI     .equ 2
+;TERMMCTLW_INI   .equ 05500h
 
 
         .ELSECASE
 ; Configure UART_TERM @ 19200 bauds / 4MHz
 ; N=4000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,    &TERMBRW
-            MOV.W   #4901h, &TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 4901h
 
         .CASE 19200
 ; Configure UART_TERM @ 9600 bauds / 1MHz
 ; N=1000000/9600=104.166... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,    &TERMBRW
-            MOV     #2081h, &TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 2081h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 2MHz
 ; N=2000000/31250=64 ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 19200 bauds / 1MHz
 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,    &TERMBRW
-            MOV.W   #0241h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0241h
 
         .CASE 57600
 ; Configure UART_TERM @ 115200 bauds / 4MHz
 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0BB21h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0BB21h
 
         .CASE 115200
 ; Configure UART_TERM @ 57600 bauds / 1MHz
 ; N=1000000/57600=17.301... ==> UCOS16=0, UCBR0=int(N)=17, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.301)=0x4A
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #17,     &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 
         .CASE 230400
 ; Configure UART_TERM @ 115200 bauds / 1MHz
 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 2MHz
 ; N=2000000/250000=8 ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0000h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0000h
 
         .CASE 268800  ; PL2303TA baudrate
 ; Configure UART_TERM @ 134400 bauds / 1MHz
 ; N=1000000/134400=7.440476 ==> UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.440476)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #7,     &TERMBRW
-            MOV.W   #05500h,&TERMMCTLW
+TERMBRW_INI     .equ 7
+TERMMCTLW_INI   .equ 05500h
 
         .CASE 403200  ; PL2303TA baudrate
 ; Configure UART_TERM @ 201600 bauds / 1MHz
 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0FE00h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0FE00h
 
         .CASE 460800 ; CP2102 baudrate
 ; Configure UART_TERM @ 921600 bauds / 4MHz
 ; N = 4000000/460800 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,     &TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 614400 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 8MHz
 ; N = 8000000/2457600 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #3,     &TERMBRW
-             MOV.W   #04400h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 04400h
 
         .CASE 806400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 806400 bauds / 2MHz
 ; Configure UART_TERM @ 403200 bauds / 1MHz
 ; N=1000000/403200=2.48016 ==> UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.48016)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #05500h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 05500h
 
 ;        .CASE 921600
 ;; Configure UART_TERM @ 921600 bauds / 2MHz
 ;; N = 2000000/921600 = 2.170138... ==> {UCOS16=0, UCBR1=int(N)=2, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.170138)=0x11
 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;             MOV     #2,     &TERMBRW
-;             MOV.W   #01100h,&TERMMCTLW
+;TERMBRW_INI     .equ 2
+;TERMMCTLW_INI   .equ 01100h
 
 
         .ELSECASE
 ; Configure UART_TERM @ 9600 bauds / 4MHz
 ; N=4000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #26,    &TERMBRW
-            MOV.W   #0D601h,&TERMMCTLW
+TERMBRW_INI     .equ 26
+TERMMCTLW_INI   .equ 0D601h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 4MHz
 ; N=4000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,    &TERMBRW
-            MOV.W   #4901h, &TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 4901h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 4MHz
 ; N=4000000/31250=128 ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 4MHz
 ; N=4000000/38400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.16666)=0x20
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #02081h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 02081h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 4MHz
 ; N=8000000/115200=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #5551h, &TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 5551h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 4MHz
 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0BB21h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0BB21h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 4MHz
 ; see table "Recommended Settings for Typical Crystals and Baudrates"
-            MOV     #17,    &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 4MHz
 ; N=4000000/250000=16 ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0001h, &TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 4MHz
 ; N = 8000000/921600 = 8.680555... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #8,     &TERMBRW
-             MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 806400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 806400 bauds / 4MHz
 ; Configure UART_TERM @ 201600 bauds / 1MHz
 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0FE00h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0FE00h
 
         .CASE 921600 ; CP2102 baudrate
 ; Configure UART_TERM @ 921600 bauds / 4MHz
 ; N = 8000000/921600 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,     &TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 1228800 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 8MHz
 ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #3,     &TERMBRW
-             MOV.W   #04400h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 04400h
 
 
         .ELSECASE
         .CASE 9600
 ; Configure UART_TERM @ 9600 bauds / 8MHz
 ; N=8000000/9600=833.333... ==> UCOS16=1, UCBR0=int(N/16)=52, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
-            MOV     #52,    &TERMBRW
-            MOV     #4911h, &TERMMCTLW
+TERMBRW_INI     .equ 52
+TERMMCTLW_INI   .equ 4911h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 8MHz
 ; N=8000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #26,    &TERMBRW
-            MOV.W   #0D601h,&TERMMCTLW
+TERMBRW_INI     .equ 26
+TERMMCTLW_INI   .equ 0D601h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 8MHz
 ; N=8000000/31250=256 ==> UCOS16=1, UCBR0=int(N/16)=16, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #16,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 16
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 8MHz
 ; N=8000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,    &TERMBRW
-            MOV.W   #4901h, &TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 4901h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 8MHz
 ; N=8000000/57600=138.888... ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.88888)=0xF7
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0F7A1h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0F7A1h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 8MHz
 ; N=8000000/115200=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #5551h, &TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 5551h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 8MHz
 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0BB21h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0BB21h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 8MHz
 ; N=8000000/250000=32 ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0001h, &TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 8MHz
 ; see table "Recommended Settings for Typical Crystals and Baudrates"
-            MOV     #17,    &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 
         .CASE 614400 ; PL2303TA baudrate
 ; Configure UART_TERM @ 614400 bauds / 8MHz
 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #13,     &TERMBRW
-             MOV.W   #00200h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 00200h
 
         .CASE 806400  ; PL2303TA baudrate
 ; Configure UART_TERM @ 806400 bauds / 8MHz
 ; Configure UART_TERM @ 100800 bauds / 1MHz
 ; N=1000000/100800=9,920634 ==> UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.920634)=0xFD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #9,     &TERMBRW
-            MOV.W   #0FD00h,&TERMMCTLW
+TERMBRW_INI     .equ 9
+TERMMCTLW_INI   .equ 0FD00h
 
         .CASE 921600
 ; Configure UART_TERM @ 921600 bauds / 8MHz
 ; Configure UART_TERM @ 1843200 bauds / 16MHz
 ; N = 16000000/1843200 = 8.680555... ==> {UCOS16=0, UCBR1=int(N)=8, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #8,     &TERMBRW
-             MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 8MHz
 ; Configure UART_TERM @ 2000000 bauds / 16MHz
 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
-            MOV     #8 ,    &TERMBRW
-            MOV.W   #00000h,&TERMMCTLW
+TERMBRW_INI     .equ 8 
+TERMMCTLW_INI   .equ 00000h
 
         .CASE 1228800 ; PL2303TA baudrate
 ; Configure UART_TERM @ 1228800 bauds / 8MHz
 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #6,     &TERMBRW
-             MOV.W   #0AA00h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0AA00h
 
         .CASE 1382400 ; CP2102 baudrate
 ; Configure UART_TERM @ 1382400 bauds / 8MHz
 ; N = 8000000/1382400 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.787037)=0xED
-            MOV     #5,    &TERMBRW
-            MOV.W   #0DD00h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0DD00h
 
         .CASE 1843200 ; CP2102 baudrate (with programming)
 ; Configure UART_TERM @ 1843200 bauds / 8MHz
 ; N = 16000000/1843200 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,     &TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 8MHz
 ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #3,     &TERMBRW
-             MOV.W   #04400h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 04400h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 8MHz
 ; Configure UART_TERM @ 6000000 bauds / 16MHz
 ; N = 16000000/6000000 = 2.6666.. ==> {UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.6666)=0xB6
-            MOV     #2,    &TERMBRW
-            MOV.W   #0B600h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0B600h
 
         .ELSECASE
             .error "UART_TERM / 8 MHz : baudrate not implemented"
 ; Configure UART_TERM @ 19200 bauds / 20MHz
 ; N=20000000/19200=1041.66666 ==> UCOS16=1, UCBR0=int(N/16)=65, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.66666)=0xd6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #65,&TERMBRW
-            MOV     #0D611h,&TERMMCTLW
+TERMBRW_INI     .equ 65
+TERMMCTLW_INI   .equ 0D611h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 10MHz
 ; Configure UART_TERM @ 38400 bauds / 20MHz
 ; N=20000000/38400=520.833333 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0)=0xBF
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #32,&TERMBRW
-            MOV.W   #0BF01h,&TERMMCTLW
+TERMBRW_INI     .equ 32
+TERMMCTLW_INI   .equ 0BF01h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 10MHz
 ; N=10000000/31250=320 ==> UCOS16=1, UCBR0=int(N/16)=20, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #20,&TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 20
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 10MHz
 ; N=10000000/38400=260.41666 ==> UCOS16=1, UCBR0=int(N/16)=16, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(.04166)=0x92
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #16,&TERMBRW
-            MOV.W   #09241h,&TERMMCTLW
+TERMBRW_INI     .equ 16
+TERMMCTLW_INI   .equ 09241h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 10MHz
 ; Configure UART_TERM @ 115200 bauds / 20MHz
 ; N=20000000/115200=173.61111... ==> UCOS16=1, UCBR0=int(N/16)=10, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.6111)=0xAD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #10,&TERMBRW
-            MOV.W   #0AD01h,&TERMMCTLW
+TERMBRW_INI     .equ 10
+TERMMCTLW_INI   .equ 0AD01h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 10MHz
 ; Configure UART_TERM @ 230400 bauds / 20MHz
 ; N=20000000/230400=86.80555... ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=6, UCBRS0= fn(frac(N))=fn(0.80555)=0xEE
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #5,&TERMBRW
-            MOV.W   #0EE61h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0EE61h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 10MHz
 ; Configure UART_TERM @ 460800 bauds / 20MHz
 ; N=20000000/460800=43.402777... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0Bh, UCBRS0= fn(frac(N))=fn(0.4027)=0x92
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #92B1h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 92B1h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 10MHz
 ; Configure UART_TERM @ 500000 bauds / 20MHz
 ; N = 20000000/500000 = 40 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=8  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,  &TERMBRW
-            MOV.W   #0081h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0081h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 10MHz
 ; Configure UART_TERM @ 921600 bauds / 20MHz
 ; N = 20000000/921600 = 21.701388... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=5  UCBRS0=fn(frac(N))=fn(0.70138)=0xB7
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0B751h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0B751h
 
         .CASE 500000 ; CP2102 baudrate
 ; Configure UART_TERM @ 500000 bauds / 10MHz
 ; Configure UART_TERM @ 1000000 bauds / 20MHz
 ; N = 20000000/1000000 = 20 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0041h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0041h
 
         .CASE 614400
 ; Configure UART_TERM @ 614400 bauds / 10MHz
 ; Configure UART_TERM @ 1228800 bauds / 20MHz
 ; N = 20000000/1228800 = 16.276... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0,  UCBRS0=fn(frac(N))=fn(0.276)=0x44
-            MOV     #1,     &TERMBRW
-            MOV.W   #04411h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 04411h
 
         .CASE 921600
 ; Configure UART_TERM @ 921600 bauds / 10MHz
 ; Configure UART_TERM @ 1843200 bauds / 20MHz
 ; N = 20000000/1843200 = 10.85069...  {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.85069)=0xDF
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #10,    &TERMBRW
-             MOV.W   #0DF00h,&TERMMCTLW
+TERMBRW_INI     .equ 10
+TERMMCTLW_INI   .equ 0DF00h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 10MHz
 ; N = 10000000/1000000 = 10 ==> {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.0)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #10,     &TERMBRW
-            MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 10
+TERMMCTLW_INI   .equ 0
 
         .CASE 1228800
 ; Configure UART_TERM @ 1228800 bauds / 10MHz
 ; N = 10000000/1228800 = 8.138.. ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.138)=0x10
-            MOV     #8,     &TERMBRW
-            MOV.W   #01000h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 01000h
 
         .CASE 1382400
 ; Configure UART_TERM @ 1382400 bauds / 10MHz
 ; N = 10000000/1382400 = 7.2338.. ==> {UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.2338)=0x22
-            MOV     #7,     &TERMBRW
-            MOV.W   #02200h,&TERMMCTLW
+TERMBRW_INI     .equ 7
+TERMMCTLW_INI   .equ 02200h
 
         .CASE 1843200
 ; Configure UART_TERM @ 1843200 bauds / 10MHz
 ; N = 10000000/1843200 = 5.4253...  {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.4253)=0x92
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #5,    &TERMBRW
-             MOV.W   #09200h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 09200h
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 10MHz
 ; N = 10000000/2457600 = 4.069010... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.06901)=0x01
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,     &TERMBRW
-             MOV.W   #00100h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 00100h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 10MHz
 ; Configure UART_TERM @ 6000000 bauds / 20MHz
 ; N = 20000000/6000000 = 3.3333333 ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.33333)=0x49
-            MOV     #3,&TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 04900h
 
         .ELSECASE
             .error "UART_TERM / 10 MHz : baudrate not implemented"
 ; Configure UART_TERM @ 19200 bauds / 24MHz
 ; N=12000000/19200=1250 ==> UCOS16=1, UCBR0=int(N/16)=78, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #78,    &TERMBRW
-            MOV     #0021h, &TERMMCTLW
+TERMBRW_INI     .equ 78
+TERMMCTLW_INI   .equ 0021h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 12MHz
 ; Configure UART_TERM @ 38400 bauds / 24MHz
 ; N=24000000/19200=625 ==> UCOS16=1, UCBR0=int(N/16)=39, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #39,    &TERMBRW
-            MOV.W   #0011h,&TERMMCTLW
+TERMBRW_INI     .equ 39
+TERMMCTLW_INI   .equ 0011h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 8MHz
 ; N=12000000/31250=384 ==> UCOS16=1, UCBR0=int(N/16)=24, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #24,     &TERMBRW
-            MOV.W   #1,&TERMMCTLW
+TERMBRW_INI     .equ 24
+TERMMCTLW_INI   .equ 1
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 12MHz
 ; N=12000000/19200=312.5... ==> UCOS16=1, UCBR0=int(N/16)=19, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.5)=0x55
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #19,    &TERMBRW
-            MOV.W   #05581h,&TERMMCTLW
+TERMBRW_INI     .equ 19
+TERMMCTLW_INI   .equ 05581h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 12MHz
 ; Configure UART_TERM @ 115200 bauds / 24MHz
 ; N=24000000/115200=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,     &TERMBRW
-            MOV.W   #04901h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 04901h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 12MHz
 ; Configure UART_TERM @ 230400 bauds / 24MHz
 ; N=24000000/230400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #2081h, &TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 2081h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 12MHz
 ; Configure UART_TERM @ 460800 bauds / 24MHz
 ; N=24000000/460800=52.08333... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,     &TERMBRW
-            MOV.W   #0241h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0241h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 12MHz
 ; Configure UART_TERM @ 500000 bauds / 24MHz
 ; N = 24000000/500000 = 48 ==> {UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #3,  &TERMBRW
-;            MOV.W   #0001h,&TERMMCTLW
+;TERMBRW_INI     .equ 3
+;TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 12MHz
 ; Configure UART_TERM @ 921600 bauds / 24MHz
 ; N = 24000000/921600 = 26.041666... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10  UCBRS0=fn(frac(N))=fn(0.0416)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #00A1h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00A1h
 
         .CASE 500000 ; CP2102 baudrate
 ; Configure UART_ @ 500000 bauds / 12MHz
 ; Configure UART_ @ 1000000 bauds / 24MHz
 ; N = 24000000/1000000 = 24 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0041h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0041h
 
         .CASE 614400
 ; Configure UART_TERM @ 614400 bauds / 12MHz
 ; Configure UART_TERM @ 1228800 bauds / 24MHz
 ; N = 24000000/1228800 = 19.531... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=3,  UCBRS0=fn(frac(N))=fn(0.531)=0xAA
-            MOV     #1,     &TERMBRW
-            MOV.W   #0AA31h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0AA31h
 
         .CASE 921600
 ; Configure UART_TERM @ 921600 bauds / 12MHz
 ; Configure UART_TERM @ 1843200 bauds / 24MHz
 ; N = 24000000/1843200 = 13.08203...  {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.08203)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #17,    &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 12MHz
 ; N = 12000000/1000000 = 12 ==> {UCOS16=0, UCBR0=int(N)=12, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #12,    &TERMBRW
-            MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 12
+TERMMCTLW_INI   .equ 0
 
         .CASE 1228800 ; PL2303TA baudrate
 ; Configure UART_TERM @ 1228800 bauds / 12MHz
 ; Configure UART_TERM @ 2457600 bauds / 24MHz
 ; N = 24000000/2457600 = 9.765625... ==> {UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.765625)=0xDD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #9,     &TERMBRW
-             MOV.W   #0dd00h,&TERMMCTLW
+TERMBRW_INI     .equ 9
+TERMMCTLW_INI   .equ 0dd00h
 
         .CASE 1382400 ; CP2102 baudrate (with programming)
 ; Configure UART_TERM @ 1382400 bauds / 12MHz
 ; N = 12000000/1382400 = 8.68055... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.68055)=0x6B
-            MOV     #8,    &TERMBRW
-            MOV.W   #06B00h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 06B00h
 
         .CASE 1843200 ; CP2102 baudrate (with programming)
 ; Configure UART_TERM @ 1843200 bauds / 12MHz
 ; N = 12000000/1843200 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.5104)=0xaa
-            MOV     #6,    &TERMBRW
-            MOV.W   #0AA00h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0AA00h
 
         .CASE 2000000
 ; Configure UART_TERM @ 2000000 bauds / 12MHz
 ; Configure UART_TERM @ 4000000 bauds / 24MHz
 ; N = 24000000/4000000 = 6... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #6,&TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 1228800 bauds / 12MHz
 ; N = 12000000/2457600 = 4.8828... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.8828)=0xF7
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,     &TERMBRW
-             MOV.W   #0F700h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0F700h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 12MHz
 ; Configure UART_TERM @ 6000000 bauds / 24MHz
 ; N = 24000000/6000000 = 4 ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
-             MOV     #4,     &TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0
 
         .ELSECASE
             .error "UART_TERM / 12 MHz : baudrate not implemented"
 ; Configure UART_TERM @ 9600 bauds / 16MHz
 ; N=16000000/9600=1666.666... ==> UCOS16=1, UCBR0=int(N/16)=104, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #104,    &TERMBRW
-            MOV     #0D621h, &TERMMCTLW
+TERMBRW_INI     .equ 104
+TERMMCTLW_INI   .equ 0D621h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 16MHz
 ; N=16000000/19200=833.333... ==> UCOS16=1, UCBR0=int(N/16)=52, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #52,    &TERMBRW
-            MOV     #4911h, &TERMMCTLW
+TERMBRW_INI     .equ 52
+TERMMCTLW_INI   .equ 4911h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 16MHz
 ; N=16000000/31250=512 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #32,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 32
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 16MHz
 ; N=16000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #26,    &TERMBRW
-            MOV.W   #0D601h,&TERMMCTLW
+TERMBRW_INI     .equ 26
+TERMMCTLW_INI   .equ 0D601h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 16MHz
 ; N=16000000/57600=277.777... ==> UCOS16=1, UCBR0=int(N/16)=17, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.77777)=0xDD
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #17,     &TERMBRW
-            MOV.W   #0DD51h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 0DD51h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 16MHz
 ; N=16000000/115200=138.888... ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.88888)=0xF7
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #8,     &TERMBRW
-            MOV.W   #0F7A1h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0F7A1h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 16MHz
 ; N=16000000/230400=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #5551h, &TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 5551h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 16MHz
 ; N=16000000/250000=64 ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #4,     &TERMBRW
-            MOV.W   #0001h, &TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 16MHz
 ; N=16000000/460800=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #0BB21h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0BB21h
 
         .CASE 500000 ; CP2102 baudrate
 ; Configure UART_TERM @ 500000 bauds / 16MHz
 ; N = 16000000/500000 = 32 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF1=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #2,  &TERMBRW
-;            MOV.W   #00001h,&TERMMCTLW
+;TERMBRW_INI     .equ 2
+;TERMMCTLW_INI   .equ 00001h
 
         .CASE 921600
 ;; Configure UART_TERM @ 921600 bauds / 16MHz
 ; N = 1600000/921600 = 17.3611... ==> {UCOS16=0, UCBR0=int(N)=14, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.3611)=0x4A
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #17,    &TERMBRW
-            MOV.W   #04A00h,&TERMMCTLW
+TERMBRW_INI     .equ 17
+TERMMCTLW_INI   .equ 04A00h
 ; Configure UART_TERM @ 921600 bauds / 16MHz
 ; N = 16000000/921600 = 17.3611 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=1  UCBRS0=fn(frac(N))=fn(0.3611)=0x4A
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #1,    &TERMBRW
-;            MOV.W   #04A11h,&TERMMCTLW
+;TERMBRW_INI     .equ 1
+;TERMMCTLW_INI   .equ 04A11h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 16MHz
 ; N = 16000000/1000000 = 16 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,    &TERMBRW
-            MOV.W   #00001h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00001h
 
         .CASE 1228800 ; PL2303TA baudrate
 ; Configure UART_TERM @ 1228800 bauds / 16MHz
 ; Configure UART_TERM @ 614400 bauds / 8MHz
 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #13,     &TERMBRW
-             MOV.W   #00200h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 00200h
 
         .CASE 1382400 ; CP2102 baudrate (with programming)
 ; Configure UART_TERM @ 1382400 bauds / 16MHz
 ; N = 16000000/1382400 = 11.574074... ==> {UCOS16=0, UCBR0=int(N)=11, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.68055)=0x6B
-            MOV     #11,    &TERMBRW
-            MOV.W   #06B00h,&TERMMCTLW
+TERMBRW_INI     .equ 11
+TERMMCTLW_INI   .equ 06B00h
 
         .CASE 1843200 ; CP2102 baudrate (with programming)
 ; Configure UART_TERM @ 1843200 bauds / 16MHz
 ; N = 16000000/1843200 = 8.680555... ==> {UCOS16=0, UCBR1=int(N)=8, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.68055)=0xD6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #8,     &TERMBRW
-             MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 2000000
 ; Configure UART_TERM @ 2000000 bauds / 16MHz
 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
-            MOV     #8 ,    &TERMBRW
-            MOV.W   #00000h,&TERMMCTLW
+TERMBRW_INI     .equ 8 
+TERMMCTLW_INI   .equ 00000h
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 1228800 bauds / 8MHz
 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #6,     &TERMBRW
-             MOV.W   #0AA00h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0AA00h
 
         .CASE 2764800
 ; Configure UART_TERM @ 2764800 bauds / 16MHz
 ; N = 16000000/2764800 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.787037)=0xED
-            MOV     #5,    &TERMBRW
-            MOV.W   #0DD00h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0DD00h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 16MHz
 ; N = 16000000/3000000 = 5.333333... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.333333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #5,     &TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 04900h
 
         .CASE 4000000 ; PL203HXD baudrate
 ; Configure UART_TERM @ 4000000 bauds / 16MHz
 ; N = 16000000/4000000 = 4... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,&TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0
 
         .CASE 5000000 ; PL203HXD baudrate
 ; Configure UART_TERM @ 5000000 bauds / 16MHz
 ; N = 16000000/5000000 = 3.2... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.2)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #3,&TERMBRW
-             MOV.W   #02100h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 02100h
 
         .CASE 6000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 6000000 bauds / 24MHz
 ; N = 16000000/6000000 = 2.6666.. ==> {UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.6666)=0xB6
-            MOV     #2,&TERMBRW
-            MOV.W   #0B600h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0B600h
 
         .ELSECASE
             .error "UART_TERM / 16 MHz : baudrate not implemented"
 ; Configure UART_TERM @ 9600 bauds / 20MHz
 ; N=20000000/9600=2083.3333 ==> UCOS16=1, UCBR0=int(N/16)=130, UCBRF0=int(frac(N/16)*16)=3, UCBRS0= fn(frac(N))=(fn(.3333))=0x25
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #130,&TERMBRW
-            MOV     #2531h,&TERMMCTLW
+TERMBRW_INI     .equ 130
+TERMMCTLW_INI   .equ 2531h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 20MHz
 ; N=20000000/19200=1041.66666 ==> UCOS16=1, UCBR0=int(N/16)=65, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.66666)=0xd6
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #65,&TERMBRW
-            MOV     #0D611h,&TERMMCTLW
+TERMBRW_INI     .equ 65
+TERMMCTLW_INI   .equ 0D611h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 20MHz
 ; N=20000000/31250=640 ==> UCOS16=1, UCBR0=int(N/16)=40, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #40,&TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 40
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 20MHz
 ; N=20000000/38400=520.833333 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0)=0xBF
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #32,&TERMBRW
-            MOV.W   #0BF01h,&TERMMCTLW
+TERMBRW_INI     .equ 32
+TERMMCTLW_INI   .equ 0BF01h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 20MHz
 ; N=20000000/57600=346.0207... ==> UCOS16=1, UCBR0=int(N/16)=21, UCBRF0=int(frac(N/16)*16)=0Ah, UCBRS0= fn(frac(N))=fn(0.0207)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #21,&TERMBRW
-            MOV.W   #000A1h,&TERMMCTLW
+TERMBRW_INI     .equ 21
+TERMMCTLW_INI   .equ 000A1h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 20MHz
 ; N=20000000/115200=173.61111... ==> UCOS16=1, UCBR0=int(N/16)=10, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.6111)=0xAD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #10,&TERMBRW
-            MOV.W   #0AD01h,&TERMMCTLW
+TERMBRW_INI     .equ 10
+TERMMCTLW_INI   .equ 0AD01h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 20MHz
 ; N=20000000/230400=86.80555... ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=6, UCBRS0= fn(frac(N))=fn(0.80555)=0xEE
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #5,&TERMBRW
-            MOV.W   #0EE61h,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0EE61h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 20MHz
 ; N=20000000/250000=80 ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #5,     &TERMBRW
-            MOV.W   #0001h, &TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 20MHz
 ; N=20000000/460800=43.402777... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0Bh, UCBRS0= fn(frac(N))=fn(0.4027)=0x92
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,     &TERMBRW
-            MOV.W   #92B1h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 92B1h
 
         .CASE 500000 ; CP2102 baudrate
 ; Configure UART_TERM @ 500000 bauds / 20MHz
 ; N = 20000000/500000 = 40 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=8  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #2,  &TERMBRW
-            MOV.W   #0081h,&TERMMCTLW
+TERMBRW_INI     .equ 2
+TERMMCTLW_INI   .equ 0081h
 
         .CASE 921600
 ; Configure UART_TERM @ 921600 bauds / 20MHz
 ; N = 20000000/921600 = 21.701388... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=5  UCBRS0=fn(frac(N))=fn(0.70138)=0xB7
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0B751h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0B751h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 20MHz
 ; N = 20000000/1000000 = 20 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0041h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0041h
 
         .CASE 1228800
 ; Configure UART_TERM @ 1228800 bauds / 20MHz
 ; N = 20000000/1228800 = 16.276... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0,  UCBRS0=fn(frac(N))=fn(0.276)=0x44
-            MOV     #1,     &TERMBRW
-            MOV.W   #04411h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 04411h
 
         .CASE 1382400
 ; Configure UART_TERM @ 1382400 bauds / 20MHz
 ; N = 20000000/1382400 = 14.46759... ==> {UCOS16=0, UCBR0=int(N)=14, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.46759)=0x55
-            MOV     #14,     &TERMBRW
-            MOV.W   #05500h,&TERMMCTLW
+TERMBRW_INI     .equ 14
+TERMMCTLW_INI   .equ 05500h
 
         .CASE 1843200
 ; Configure UART_TERM @ 1843200 bauds / 20MHz
 ; N = 20000000/1843200 = 10.85069...  {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.85069)=0xDF
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #10,    &TERMBRW
-             MOV.W   #0DF00h,&TERMMCTLW
+TERMBRW_INI     .equ 10
+TERMMCTLW_INI   .equ 0DF00h
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 20MHz
 ; N = 20000000/2457600 = 8.13802... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.13802)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #8,     &TERMBRW
-             MOV.W   #01100h,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 01100h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 20MHz
 ; N = 20000000/3000000 = 6.666666 ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.66666)=0xD6
-            MOV     #6,&TERMBRW
-             MOV.W   #0D600h,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0D600h
 
         .CASE 4000000 ; PL2303HXD baudrate
 ; Configure UART_TERM @ 4000000 bauds / 20MHz
 ; N = 20000000/4000000 = 5... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #5,&TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 5
+TERMMCTLW_INI   .equ 0
 
         .CASE 5000000 ; PL203HXD baudrate
 ; Configure UART_TERM @ 5000000 bauds / 20MHz
 ; N = 20000000/5000000 = 4... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.00)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,&TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0
 
         .CASE 6000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 6000000 bauds / 20MHz
 ; N = 20000000/6000000 = 3.3333333 ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.33333)=0x49
-            MOV     #3,&TERMBRW
-             MOV.W   #04900h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 04900h
 
         .ELSECASE
             .error "UART_TERM / 20 MHz : baudrate not implemented"
 ; Configure UART_TERM @ 9600 bauds / 24MHz
 ; N=24000000/9600=2500 ==> UCOS16=1, UCBR0=int(N/16)=156, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=(fn(0))=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #156,    &TERMBRW
-            MOV     #0041h, &TERMMCTLW
+TERMBRW_INI     .equ 156
+TERMMCTLW_INI   .equ 0041h
 
         .CASE 19200
 ; Configure UART_TERM @ 19200 bauds / 24MHz
 ; N=24000000/19200=1250 ==> UCOS16=1, UCBR0=int(N/16)=78, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #78,    &TERMBRW
-            MOV     #0021h, &TERMMCTLW
+TERMBRW_INI     .equ 78
+TERMMCTLW_INI   .equ 0021h
 
         .CASE 31250  ; MIDI interface
 ; Configure UART_TERM @ 31250 bauds / 8MHz
 ; N=24000000/31250=768 ==> UCOS16=1, UCBR0=int(N/16)=48, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #48,     &TERMBRW
-            MOV.W   #0001h,&TERMMCTLW
+TERMBRW_INI     .equ 48
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 38400
 ; Configure UART_TERM @ 38400 bauds / 24MHz
 ; N=24000000/19200=625 ==> UCOS16=1, UCBR0=int(N/16)=39, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0)=0x00
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #39,    &TERMBRW
-            MOV.W   #0011h,&TERMMCTLW
+TERMBRW_INI     .equ 39
+TERMMCTLW_INI   .equ 0011h
 
         .CASE 57600
 ; Configure UART_TERM @ 57600 bauds / 24MHz
 ; N=24000000/57600=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.666)=0xD6
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #26,     &TERMBRW
-            MOV.W   #0D601h,&TERMMCTLW
+TERMBRW_INI     .equ 26
+TERMMCTLW_INI   .equ 0D601h
 
         .CASE 115200
 ; Configure UART_TERM @ 115200 bauds / 24MHz
 ; N=24000000/115200=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.333)=0x49
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #13,     &TERMBRW
-            MOV.W   #04901h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 04901h
 
         .CASE 230400
 ; Configure UART_TERM @ 230400 bauds / 24MHz
 ; N=24000000/230400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #2081h, &TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 2081h
 
         .CASE 250000  ; DMX interface
 ; Configure UART_TERM @ 250000 bauds / 24MHz
 ; N=24000000/250000=96 ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #6,     &TERMBRW
-            MOV.W   #0001h, &TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0001h
 
         .CASE 460800
 ; Configure UART_TERM @ 460800 bauds / 24MHz
 ; N=24000000/460800=52.08333... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #3,     &TERMBRW
-            MOV.W   #0241h,&TERMMCTLW
+TERMBRW_INI     .equ 3
+TERMMCTLW_INI   .equ 0241h
 
         .CASE 500000 ; CP2102 baudrate
 ; Configure UART_TERM @ 500000 bauds / 24MHz
 ; N = 24000000/500000 = 48 ==> {UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-;            MOV     #3,  &TERMBRW
-;            MOV.W   #0001h,&TERMMCTLW
+;TERMBRW_INI     .equ 3
+;TERMMCTLW_INI   .equ 0001h
 
         .CASE 921600
 ; Configure UART_TERM @ 921600 bauds / 24MHz
 ; N = 24000000/921600 = 26.041666... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10  UCBRS0=fn(frac(N))=fn(0.0416)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #00A1h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 00A1h
 
         .CASE 1000000
 ; Configure UART_TERM @ 1000000 bauds / 24MHz
 ; N = 24000000/1000000 = 24 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-            MOV     #1,     &TERMBRW
-            MOV.W   #0041h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0041h
 
         .CASE 1228800
 ; Configure UART_TERM @ 1228800 bauds / 24MHz
 ; N = 24000000/1228800 = 19.531... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=3,  UCBRS0=fn(frac(N))=fn(0.531)=0xAA
-            MOV     #1,     &TERMBRW
-            MOV.W   #0AA31h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 0AA31h
 
         .CASE 1382400
 ; Configure UART_TERM @ 1382400 bauds / 24MHz
 ; N = 24000000/1382400 = 17.36111... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=1,  UCBRS0=fn(frac(N))=fn(0.3611)=0x4A
-            MOV     #1,     &TERMBRW
-            MOV.W   #04A11h,&TERMMCTLW
+TERMBRW_INI     .equ 1
+TERMMCTLW_INI   .equ 04A11h
 
         .CASE 1843200
 ; Configure UART_TERM @ 1843200 bauds / 24MHz
 ; N = 24000000/1843200 = 13.08203...  {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.08203)=0x02
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #13,    &TERMBRW
-             MOV.W   #0200h,&TERMMCTLW
+TERMBRW_INI     .equ 13
+TERMMCTLW_INI   .equ 0200h
 
         .CASE 2457600 ; PL2303TA baudrate
 ; Configure UART_TERM @ 2457600 bauds / 24MHz
 ; N = 24000000/2457600 = 9.765625... ==> {UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.765625)=0xDD
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #9,     &TERMBRW
-             MOV.W   #0DD00h,&TERMMCTLW
+TERMBRW_INI     .equ 9
+TERMMCTLW_INI   .equ 0DD00h
 
         .CASE 3000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 3000000 bauds / 24MHz
 ; N = 24000000/3000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
-            MOV     #8,&TERMBRW
-            MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 8
+TERMMCTLW_INI   .equ 0
 
         .CASE 4000000 ; PL2303HXD baudrate
 ; Configure UART_TERM @ 4000000 bauds / 24MHz
 ; N = 24000000/4000000 = 6... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #6,&TERMBRW
-             MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 6
+TERMMCTLW_INI   .equ 0
 
         .CASE 5000000 ; PL203HXD baudrate
 ; Configure UART_TERM @ 5000000 bauds / 24MHz
 ; N = 24000000/5000000 = 4.8... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.2)=0x11
 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
-             MOV     #4,&TERMBRW
-             MOV.W   #0EE00h,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0EE00h
 
         .CASE 6000000 ; PL2303TA baudrate
 ; Configure UART_TERM @ 6000000 bauds / 24MHz
 ; N = 24000000/6000000 = 4 ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
-            MOV     #4,&TERMBRW
-            MOV.W   #0,&TERMMCTLW
+TERMBRW_INI     .equ 4
+TERMMCTLW_INI   .equ 0
 
         .ELSECASE
             .error "UART_TERM / 24 MHz : baudrate not implemented"
index 4229c5f..4551c99 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=\$10!          ; P1.4 = TX
+TERM_TX=\$10!          ; P1.4 = TX also Deep_RST pin
 TERM_RX=\$20!          ; P1.5 = RX
-TERM_TXRX=\$30!
+TERM_BUS=\$30!
 
+TERM_IN=\$200!
 TERM_REN=\$206!
 TERM_SEL=\$20C!
 TERM_IE=\$21A!
 TERM_IFG=\$21C!
-Deep_RST=\$10!         ; = TX pin
-Deep_RST_IN=\$200!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=4!              ; P3.2
 CTS=1!              ; P3.0
index f3afac9..edd48e2 100644 (file)
@@ -11,7 +11,10 @@ rDOCON=R5!
 rDOVAR=R6!
 rEXIT=R7!
 rDOCOL=R7!
-R=R7!
+Q=R4!
+P=R5!
+M=R6!
+L=R7!
 Y=R8!
 X=R9!
 W=R10!
@@ -21,8 +24,14 @@ IP=R13!
 TOS=R14!
 PSP=R15!
 
+
+DOVAR=\$1286!   to reinit rDOVAR : MOV #DOVAR,rDOVAR
+DOCON=\$1285!   to reinit rDOCON : MOV #DOCON,rDOCON
+DODOES=\$1284!  to reinit rDODOES: MOV #DODOES,rDODOES
+
+
 ! forth words filter
-U\.R=U\.R!
+M\*=M\*
 R\>=R\>!
 R\@=R\@!
 \>R=\>R!
@@ -36,9 +45,4 @@ S\"=S\"!
 
 T\{=T\{!
 \}T=\}T!
-!_R=_R
-!_S=_S
-!_T=_T
-!_W=_W
-!_X=_X
-!_Y=_Y
+U\.R=U\.R!
index d019a3b..1ebaf9a 100644 (file)
@@ -159,9 +159,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -223,22 +224,29 @@ LAST_PSP=\$21BC!
 
 !STATE=\$21BE!           Interpreter state
 
-SAV_CURRENT=\$21C0!     preserve CURRENT when create assembler words
-OPCODE=\$21C2!          OPCODE adr
-ASMTYPE=\$21C4!         keep the opcode complement
+SOURCE_LEN=\$21C0!      len of input stream
+SOURCE_ADR=\$21C2!      adr of input stream
+TOIN=\$21C4!            >IN
+DP=\$21C6!              dictionary ptr
 
-SOURCE_LEN=\$21C6!      len of input stream
-SOURCE_ADR=\$21C8!      adr of input stream
-TOIN=\$21CA!            >IN
-DP=\$21CC!              dictionary ptr
-LASTVOC=\$21CE!         keep VOC-LINK
-CONTEXT=\$21D0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$21E0!         CURRENT dictionnary ptr
+LASTVOC=\$21C8!         keep VOC-LINK
+CONTEXT=\$21CA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$21DA!         CURRENT dictionnary ptr
 
-!BASE=\$21E2!           numeric base, must be defined before first reset !
-LINE=\$21E4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+!BASE=\$21DC!           numeric base, must be defined before first reset !
+LINE=\$21DE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!21E0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$21E2          assembler backward reference 1
+!ASMBW2=\$21E4          assembler backward reference 2
+!ASMBW3=\$21E6          assembler backward reference 3
+!ASMFW1=\$21E8          assembler forward reference 1
+!ASMFW2=\$21EA          assembler forward reference 2
+!ASMFW3=\$21EC          assembler forward reference 3
 ! ---------------------------------------
-!21E6! 22 RAM bytes free
+!21EE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index cf0fdb4..4604eb1 100644 (file)
@@ -141,9 +141,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -205,22 +206,29 @@ LAST_PSP=\$21BC!
 
 !STATE=\$21BE!           Interpreter state
 
-SAV_CURRENT=\$21C0!     preserve CURRENT when create assembler words
-OPCODE=\$21C2!          OPCODE adr
-ASMTYPE=\$21C4!         keep the opcode complement
+SOURCE_LEN=\$21C0!      len of input stream
+SOURCE_ADR=\$21C2!      adr of input stream
+TOIN=\$21C4!            >IN
+DP=\$21C6!              dictionary ptr
 
-SOURCE_LEN=\$21C6!      len of input stream
-SOURCE_ADR=\$21C8!      adr of input stream
-TOIN=\$21CA!            >IN
-DP=\$21CC!              dictionary ptr
-LASTVOC=\$21CE!         keep VOC-LINK
-CONTEXT=\$21D0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$21E0!         CURRENT dictionnary ptr
+LASTVOC=\$21C8!         keep VOC-LINK
+CONTEXT=\$21CA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$21DA!         CURRENT dictionnary ptr
 
-!BASE=\$21E2!           numeric base, must be defined before first reset !
-LINE=\$21E4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+!BASE=\$21DC!           numeric base, must be defined before first reset !
+LINE=\$21DE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!21E0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$21E2          assembler backward reference 1
+!ASMBW2=\$21E4          assembler backward reference 2
+!ASMBW3=\$21E6          assembler backward reference 3
+!ASMFW1=\$21E8          assembler forward reference 1
+!ASMFW2=\$21EA          assembler forward reference 2
+!ASMFW3=\$21EC          assembler forward reference 3
 ! ---------------------------------------
-!21E6! 22 RAM bytes free
+!21EE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index 20ce604..5581573 100644 (file)
@@ -127,9 +127,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -191,22 +192,29 @@ LAST_PSP=\$21BC!
 
 !STATE=\$21BE!           Interpreter state
 
-SAV_CURRENT=\$21C0!     preserve CURRENT when create assembler words
-OPCODE=\$21C2!          OPCODE adr
-ASMTYPE=\$21C4!         keep the opcode complement
+SOURCE_LEN=\$21C0!      len of input stream
+SOURCE_ADR=\$21C2!      adr of input stream
+TOIN=\$21C4!            >IN
+DP=\$21C6!              dictionary ptr
 
-SOURCE_LEN=\$21C6!      len of input stream
-SOURCE_ADR=\$21C8!      adr of input stream
-TOIN=\$21CA!            >IN
-DP=\$21CC!              dictionary ptr
-LASTVOC=\$21CE!         keep VOC-LINK
-CONTEXT=\$21D0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$21E0!         CURRENT dictionnary ptr
+LASTVOC=\$21C8!         keep VOC-LINK
+CONTEXT=\$21CA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$21DA!         CURRENT dictionnary ptr
 
-!BASE=\$21E2!           numeric base, must be defined before first reset !
-LINE=\$21E4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+!BASE=\$21DC!           numeric base, must be defined before first reset !
+LINE=\$21DE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!21E0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$21E2          assembler backward reference 1
+!ASMBW2=\$21E4          assembler backward reference 2
+!ASMBW3=\$21E6          assembler backward reference 3
+!ASMFW1=\$21E8          assembler forward reference 1
+!ASMFW2=\$21EA          assembler forward reference 2
+!ASMFW3=\$21EC          assembler forward reference 3
 ! ---------------------------------------
-!21E6! 22 RAM bytes free
+!21EE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index 8429745..f14d6f2 100644 (file)
@@ -126,9 +126,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -190,22 +191,29 @@ LAST_PSP=\$21BC!
 
 !STATE=\$21BE!           Interpreter state
 
-SAV_CURRENT=\$21C0!     preserve CURRENT when create assembler words
-OPCODE=\$21C2!          OPCODE adr
-ASMTYPE=\$21C4!         keep the opcode complement
+SOURCE_LEN=\$21C0!      len of input stream
+SOURCE_ADR=\$21C2!      adr of input stream
+TOIN=\$21C4!            >IN
+DP=\$21C6!              dictionary ptr
 
-SOURCE_LEN=\$21C6!      len of input stream
-SOURCE_ADR=\$21C8!      adr of input stream
-TOIN=\$21CA!            >IN
-DP=\$21CC!              dictionary ptr
-LASTVOC=\$21CE!         keep VOC-LINK
-CONTEXT=\$21D0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$21E0!         CURRENT dictionnary ptr
+LASTVOC=\$21C8!         keep VOC-LINK
+CONTEXT=\$21CA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$21DA!         CURRENT dictionnary ptr
 
-!BASE=\$21E2!           numeric base, must be defined before first reset !
-LINE=\$21E4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+!BASE=\$21DC!           numeric base, must be defined before first reset !
+LINE=\$21DE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!21E0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$21E2          assembler backward reference 1
+!ASMBW2=\$21E4          assembler backward reference 2
+!ASMBW3=\$21E6          assembler backward reference 3
+!ASMFW1=\$21E8          assembler forward reference 1
+!ASMFW2=\$21EA          assembler forward reference 2
+!ASMFW3=\$21EC          assembler forward reference 3
 ! ---------------------------------------
-!21E6! 22 RAM bytes free
+!21EE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index e4becb0..2cbb175 100644 (file)
@@ -133,14 +133,13 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
 
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
-
 SAVE_SYSRSTIV=\$1808!   to enable SYSRSTIV read
 LPM_MODE=\$180A!        LPM0+GIE is the default mode
 INIDP=\$180C!           define RST_STATE, init by wipe
@@ -239,9 +238,9 @@ HDLW_BUFofst=22!    BUFFER offset ; used by LOAD" and by WRITE"
 
 
 !OpenedFirstFile     ; "openedFile" structure 
+FirstHandle=\$1858!
 HandleMax=5!
 HandleLenght=24!
-FirstHandle=\$1858!
 HandleEnd=\$18D0!
 
 !Stack of return IP for LOADed files, preincrement stack structure
@@ -292,23 +291,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!          Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
-
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index 107a95c..865353d 100644 (file)
@@ -135,9 +135,9 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
 
 ! ----------------------
 ! SAVED VARIABLES
@@ -294,23 +294,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!          Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
-
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
index 012d3fe..bcb0666 100644 (file)
@@ -143,9 +143,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -205,23 +206,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!           Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
-
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
@@ -289,7 +296,7 @@ CurrentHdl=\$2032!  contains the address of the last opened file structure, or 0
 ! Load file operation
 ! ---------------------------------------
 pathname=\$2034!
-EndOfPath=\$2436!
+EndOfPath=\$2036!
 
 ! ---------------------------------------
 ! Handle structure
index 1084bc7..c2ee98a 100644 (file)
@@ -140,9 +140,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -202,23 +203,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!           Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
-
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
@@ -286,7 +293,7 @@ CurrentHdl=\$2032!  contains the address of the last opened file structure, or 0
 ! Load file operation
 ! ---------------------------------------
 pathname=\$2034!
-EndOfPath=\$2436!
+EndOfPath=\$2036!
 
 ! ---------------------------------------
 ! Handle structure
index 0b14a7d..3e6d9a3 100644 (file)
@@ -181,9 +181,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -243,23 +244,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!           Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
-
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
@@ -327,7 +334,7 @@ CurrentHdl=\$2032!  contains the address of the last opened file structure, or 0
 ! Load file operation
 ! ---------------------------------------
 pathname=\$2034!
-EndOfPath=\$2436!
+EndOfPath=\$2036!
 
 ! ---------------------------------------
 ! Handle structure
index 5caaab7..844ae5f 100644 (file)
@@ -148,9 +148,10 @@ SEMI=MOV \@R1+,R13\nMOV \@R13+,R0!
 ! KERNEL CONSTANTS
 ! ----------------------
 INI_THREAD=\$1800!      .word THREADS
-TERMINAL_INT=\$1802!    .word TERMINAL_INT
-FREQ_KHZ=\$1804!        .word FREQUENCY
-HECTOBAUDS=\$1806!      .word TERMINALBAUDRATE/100
+TERMBRW_RST=\$1802!     .word TERMBRW_RST
+TERMMCTLW_RST=\$1804!   .word TERMMCTLW_RST
+FREQ_KHZ=\$1806!        .word FREQUENCY
+
 ! ----------------------
 ! SAVED VARIABLES
 ! ----------------------
@@ -210,23 +211,29 @@ LAST_PSP=\$1DBC!
 
 !STATE=\$1DBE!           Interpreter state
 
-SAV_CURRENT=\$1DC0!     preserve CURRENT when create assembler words
-OPCODE=\$1DC2!          OPCODE adr
-ASMTYPE=\$1DC4!         keep the opcode complement
-
-SOURCE_LEN=\$1DC6!      len of input stream
-SOURCE_ADR=\$1DC8!      adr of input stream
-TOIN=\$1DCA!            >IN
-DP=\$1DCC!              dictionary ptr
-LASTVOC=\$1DCE!         keep VOC-LINK
-CONTEXT=\$1DD0!         CONTEXT dictionnary space (8 CELLS)
-CURRENT=\$1DE0!         CURRENT dictionnary ptr
+SOURCE_LEN=\$1DC0!      len of input stream
+SOURCE_ADR=\$1DC2!      adr of input stream
+TOIN=\$1DC4!            >IN
+DP=\$1DC6!              dictionary ptr
 
-!BASE=\$1DE2!           numeric base, must be defined before first reset !
-LINE=\$1DE4!           line in interpretation, activated with NOECHO, desactivated with ECHO
+LASTVOC=\$1DC8!         keep VOC-LINK
+CONTEXT=\$1DCA!         CONTEXT dictionnary space (8 CELLS)
+CURRENT=\$1DDA!         CURRENT dictionnary ptr
 
+!BASE=\$1DDC!           numeric base, must be defined before first reset !
+LINE=\$1DDE!            line in interpretation, activated with NOECHO, desactivated with ECHO
+! ---------------------------------------
+!1DE0! 14 RAM bytes free conditionnaly
+! ---------------------------------------
+!SAV_CURRENT=\$21E0!    preserve CURRENT when create assembler words
+!ASMBW1=\$1DE2          assembler backward reference 1
+!ASMBW2=\$1DE4          assembler backward reference 2
+!ASMBW3=\$1DE6          assembler backward reference 3
+!ASMFW1=\$1DE8          assembler forward reference 1
+!ASMFW2=\$1DEA          assembler forward reference 2
+!ASMFW3=\$1DEC          assembler forward reference 3
 ! ---------------------------------------
-!1DE6! 22 bytes RAM free
+!1DEE! 14 RAM bytes free
 ! ---------------------------------------
 
 ! ---------------------------------------
@@ -294,7 +301,7 @@ CurrentHdl=\$2032!  contains the address of the last opened file structure, or 0
 ! Load file operation
 ! ---------------------------------------
 pathname=\$2034!
-EndOfPath=\$2436!
+EndOfPath=\$2036!
 
 ! ---------------------------------------
 ! Handle structure
index c05b00f..033290e 100644 (file)
 ! FORTH I/O :
 ! ============================================
 !TERMINAL 
-TERM_TX=\$8!            P4.3 = TX
+TERM_TX=\$8!            P4.3 = TX also Deep_RST pin
 TERM_RX=\$4!            P4.2 = RX
-TERM_TXRX=\$0C!
+TERM_BUS=\$0C!
 
+TERM_IN=\$220!
 TERM_REN=\$227!
 TERM_SEL=\$22D!
 TERM_IE=\$23B!
 TERM_IFG=\$23D!
 TERM_Vec=\$FFE2!        UCA1
-Deep_RST=\$8!           TX pin = pin for FORTH Deep_RST
-Deep_RST_IN=\$220!
 
 RTS=1!                  P2.0
 CTS=2!                  P2.1
index 1dada58..49fcbb9 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=\$10!          ; P1.4 = TX
+TERM_TX=\$10!          ; P1.4 = TX also Deep_RST pin
 TERM_RX=\$20!          ; P1.5 = RX
-TERM_TXRX=\$30!
+TERM_BUS=\$30!
 
+TERM_IN=\$200!
 TERM_REN=\$206!
 TERM_SEL=\$20C!
 TERM_IE=\$21A!
 TERM_IFG=\$21C!
-Deep_RST=\$10!      ; = TX pin
-Deep_RST_IN=\$200!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=1!              ; P1.0
 CTS=2!              ; P1.1
index 1846723..d593eea 100644 (file)
 ! ============================================
 TERM_TX=1!          ; P1.0 = TX
 TERM_RX=2!          ; P1.1 = RX
-TERM_TXRX=3!
+TERM_BUS=3!
 
+TERM_IN=\$200!
 TERM_REN=\$206!
 TERM_SEL=\$20C!
 TERM_IE=\$21A!
 TERM_IFG=\$21C!
-Deep_RST=1!         ; = TX pin
-Deep_RST_IN=\$200!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=8!              ; P2.3
 CTS=\$10!           ; P2.4
index 448e7d8..a71abb9 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=1!              P2.0 = TX
+TERM_TX=1!              P2.0 = TX also Deep_RST pin
 TERM_RX=2!              P2.1 = RX
-TERM_TXRX=3!
+TERM_BUS=3!
 
+TERM_IN=\$201!
 TERM_REN=\$207!
 TERM_SEL=\$20D!
 TERM_IE=\$21B!
 TERM_IFG=\$21D!
-Deep_RST=1!             TX pin
-Deep_RST_IN=\$201!      TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=4!
 CTS=8!
index 348b6f3..9ea5cd8 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=1!          ; P2.0 = TX
+TERM_TX=1!          ; P2.0 = TX also Deep_RST pin
 TERM_RX=2!          ; P2.1 = RX
-TERM_TXRX=3!
+TERM_BUS=3!
 
+TERM_IN=\$201!
 TERM_REN=\$207!
 TERM_SEL=\$20D!
 TERM_IE=\$21B!
 TERM_IFG=\$21D!
-Deep_RST=1!         ; = TX pin
-Deep_RST_IN=\$201!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=2!              ; P4.1
 CTS=1!              ; P4.0
index 8c10854..892a96f 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=1!          ; P2.0 = TX
-TERM_RX=2!          ; P2.1 = RX
-TERM_TXRX=3!
+TXD=1!              ; P2.0 = TX also FORTH Deep_RST pin
+RXD=2!              ; P2.1 = RX
+TERM_BUS=3!
 
+TERM_IN=\$201!
 TERM_REN=\$207!
 TERM_SEL=\$20D!
 TERM_IE=\$21B!
 TERM_IFG=\$21D!
-Deep_RST=1!         ; = TX pin
-Deep_RST_IN=\$201!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=4!              ; P4.2
 CTS=2!              ; P4.1
 HANDSHAKIN=\$221!
 HANDSHAKOUT=\$223!
 
-SD_CD=4!        ; P7.2 as SD_CD
+SD_CD=4!            ; P7.2 as SD_CD
 SD_CDIN=\$260!
 
-SD_CS=1!        ; P4.0 as SD_CS     
+SD_CS=1!            ; P4.0 as SD_CS     
 SD_CSOUT=\$223!
 SD_CSDIR=\$225!
 
-SD_SEL1=\$20C!  ; word access, to configure UCB0
-SD_REN=\$206!   ; word access, to configure pullup resistors
-SD_BUS=\$04C0!  ; pins P2.2 as UCB0CLK, P1.6 as UCB0SIMO & P1.7 as UCB0SOMI
+SD_SEL1=\$20C!      ; word access, to configure UCB0
+SD_REN=\$206!       ; word access, to configure pullup resistors
+SD_BUS=\$04C0!      ; pins P2.2 as UCB0CLK, P1.6 as UCB0SIMO & P1.7 as UCB0SOMI
 
 
 ! ============================================
index c313574..dd9bfec 100644 (file)
 ! ============================================
 ! FORTH I/O :
 ! ============================================
-TERM_TX=\$10!          ; P3.4 = TX
+TERM_TX=\$10!          ; P3.4 = TX also FORTH Deep_RST pin
 TERM_RX=\$20!          ; P3.5 = RX
-TERM_TXRX=\$30!
+TERM_BUS=\$30!
 
+TERM_IN=\$220!
 TERM_REN=\$226!
 TERM_SEL=\$22C!
 TERM_IE=\$23A!
 TERM_IFG=\$23C!
-Deep_RST=\$10!         ; = TX pin
-Deep_RST_IN=\$220!  ; TERMINAL TX  pin as FORTH Deep_RST
 
 RTS=2!              ; P3.1
 CTS=1!              ; P3.0
index 24d33e6..53ef972 100644 (file)
@@ -11,10 +11,10 @@ R11=T
 R10=W
 R9=X
 R8=Y
-!R7=rEXIT
-!R6=rDOVAR
-!R5=rDOCON
-!R4=rDODOES
+R7=rDOCOL
+R6=rDOVAR
+R5=rDOCON
+R4=rDODOES
 R2=SR
 R1=RSP
 R0=PC
index 8f5328b..5fc7923 100644 (file)
 ; ----------------------------------------------------------------------
 ; compiled with MACROASSEMBLER AS (http://john.ccac.rwth-aachen.de:8000/as/)
 ; ----------------------------------------------------------------------
-    .cpu MSP430
+    .cpu MSP430X
     .include "mspregister.mac" ;
 ;    macexp off             ; uncomment to hide macro results
 
-VER .equ "V205"
+VER .equ "V206"
 
 ;-------------------------------------------------------------------------------
 ; Vingt fois sur le métier remettez votre ouvrage,
@@ -41,49 +41,51 @@ VER .equ "V205"
 ;===============================================================================
 
 ;-------------------------------------------------------------------------------
-; TARGETS kernel    ; sizes are for 8MHz, DTC=1, 2457600 bds, 3WIRES (XON/XOFF)
+; TARGETS kernel    ; sizes are for 8MHz, DTC=2, 3WIRES (XON/XOFF)
 ;-------------------------------------------------------------------------------
-;MSP_EXP430FR5739   ; compile for MSP-EXP430FR5739 launchpad        ; 3998 bytes
-;MSP_EXP430FR5969   ; compile for MSP-EXP430FR5969 launchpad        ; 3986 bytes
-;MSP_EXP430FR5994   ; compile for MSP-EXP430FR5994 launchpad        ; 4004 bytes
-;MSP_EXP430FR6989   ; compile for MSP-EXP430FR6989 launchpad        ; 4014 bytes
-;MSP_EXP430FR4133   ; compile for MSP-EXP430FR4133 launchpad        ; 4048 bytes
-;MSP_EXP430FR2433   ; compile for MSP-EXP430FR2433 launchpad        ; 3966 bytes
-;CHIPSTICK_FR2433   ; compile for the "CHIPSTICK" of M. Ken BOAK    ; 3958 bytes
-MSP_EXP430FR2355   ; compile for MSP-EXP430FR2355 launchpad        ; 3980 bytes
+;                                                                   ;INFO + MAIN
+;MSP_EXP430FR5739   ; compile for MSP-EXP430FR5739 launchpad        ;  26 + 3976 bytes
+MSP_EXP430FR5969   ; compile for MSP-EXP430FR5969 launchpad        ;  26 + 3966 bytes
+;MSP_EXP430FR5994   ;; compile for MSP-EXP430FR5994 launchpad        ;  26 + 3984 bytes
+;MSP_EXP430FR6989   ; compile for MSP-EXP430FR6989 launchpad        ;  26 + 3994 bytes
+;MSP_EXP430FR4133   ; compile for MSP-EXP430FR4133 launchpad        ;  26 + 4028 bytes
+;MSP_EXP430FR2433   ; compile for MSP-EXP430FR2433 launchpad        ;  26 + 3946 bytes
+;CHIPSTICK_FR2433   ; compile for the "CHIPSTICK" of M. Ken BOAK    ;  26 + 3938 bytes
+;MSP_EXP430FR2355   ; compile for MSP-EXP430FR2355 launchpad        ;  26 + 3960 bytes
 
 ; choose DTC (Direct Threaded Code) model, if you don't know, choose 2
 DTC .equ 2  ; DTC model 1 : DOCOL = CALL rDOCOL           14 cycles 1 word      shortest DTC model
             ; DTC model 2 : DOCOL = PUSH IP, CALL rEXIT   13 cycles 2 words     good compromize for mix FORTH/ASM code
             ; DTC model 3 : inlined DOCOL                  9 cycles 4 words     fastest
 
-FREQUENCY   .equ 24  ; fully tested at 0.25,0.5,1,2,4,8,16 (and 24 for MSP430FR57xx) MHz
-THREADS     .equ 16  ;  1,    2,    4,    8,   16,   32 search entries in dictionnary.
-                    ; +0, +108, +122, +138, +180, +232 bytes
-                    ; used to speed compilation; with bluetooth connection, choose 1,
-                    ; with uart usb bridge, choose 16.
+THREADS     .equ 16 ;  1,  2 ,  4 ,  8 ,  16,  32  search entries in dictionnary.
+                    ; +0, +28, +40, +56, +90, +154 bytes, usefull to speed compilation;
+                    ; choose 16
+
+FREQUENCY   .equ 16  ; fully tested at 0.25,0.5,1,2,4,8,16 (and 24 for MSP430FR57xx) MHz
+
 ;-------------------------------------------------------------------------------
 ; KERNEL ADD-ON SWITCHES
 ;-------------------------------------------------------------------------------
-MSP430ASSEMBLER     ;; + 1882 bytes : adds embedded assembler with TI syntax; without, you can do all but all much more slowly...
-CONDCOMP            ;; +  324 bytes : add conditionnal compilation : MARKER [UNDEFINED] [DEFINED] [IF] [ELSE] [THEN] COMPARE
+MSP430ASSEMBLER     ;; + 1814 bytes : adds embedded assembler with TI syntax; without, you can do all but all much more slowly...
+CONDCOMP            ;; +  324 bytes : adds conditionnal compilation : MARKER [UNDEFINED] [DEFINED] [IF] [ELSE] [THEN] COMPARE
 FIXPOINT_INPUT      ;; +   78 bytes : adds the interpretation input for Q15.16 numbers
-LOWERCASE           ;; +   30 bytes : enables to write strings in lowercase.
-VOCABULARY_SET      ;; +  102 bytes : adds words: VOCABULARY FORTH ASSEMBLER ALSO PREVIOUS ONLY DEFINITIONS (FORTH83)
-;SD_CARD_LOADER      ;; + 1740 bytes : to LOAD source files from SD_card
-;SD_CARD_READ_WRITE  ;; + 1188 bytes : to read, create, write and del files + source files direct copy from PC to SD_Card
-;BOOTLOADER          ; +   52 bytes : adds to <reset> a bootstrap to SD_CARD\BOOT.4TH.
+LOWERCASE           ;; +   46 bytes : enables to write strings in lowercase.
+VOCABULARY_SET      ;; +  104 bytes : adds words: VOCABULARY FORTH ASSEMBLER ALSO PREVIOUS ONLY DEFINITIONS (FORTH83)
+;SD_CARD_LOADER      ;; + 1748 bytes : to LOAD source files from SD_card
+;SD_CARD_READ_WRITE  ;; + 1192 bytes : to read, create, write and del files + source files direct copy from PC to SD_Card
+NONAME              ; +   64 bytes : adds :NONAME CODENN (CODENoNaMe)
+;BOOTLOADER          ; +   72 bytes : adds to <reset> a bootstrap to SD_CARD\BOOT.4TH.
 ;QUIETBOOT           ; +    2 bytes : to perform bootload without displaying.
-;NONAME              ; +   34 bytes : adds :NONAME
 ;TOTAL               ; +    4 bytes : to save R4 to R7 registers during interrupts.
 
 ;-------------------------------------------------------------------------------
-; OPTIONAL KERNEL ADD-ON SWITCHES (can be downloaded later)                     >------------------+
+; OPTIONAL KERNEL ADD-ON SWITCHES (thatcan be downloaded later)                 >------------------+
 ; Tip: when added here, ADD-ONs become protected against WIPE and Deep Reset...                    |
 ;-------------------------------------------------------------------------------                   v
 ;UARTtoI2C           ;                to redirect source file to a I2C TERMINAL FastForth device UART2IIC.f
-UTILITY             ;; +  426/508 bytes : add .S .RS WORDS U.R DUMP ?                            UTILITY.f
 ;FIXPOINT            ; +  452 bytes : add Q15.16 words HOLDS F+ F- F/ F* F#S F. S>F 2@ 2CONSTANT FIXPOINT.f
+UTILITY             ;; +  426/508 bytes : add .S .RS WORDS U.R DUMP ?                            UTILITY.f
 ;SD_TOOLS            ;; +  126 bytes for trivial DIR, FAT, CLUSTER and SECTOR view, adds UTILITY  SD_TOOLS.f
 ;ANS_CORE_COMPLIANT  ; +  876 bytes : required to pass coretest.4th ; (includes items below)     ANS_COMP.f
 ;ARITHMETIC          ; +  358 bytes : add S>D M* SM/REM FM/MOD * /MOD / MOD */MOD /MOD */
@@ -96,12 +98,13 @@ UTILITY             ;; +  426/508 bytes : add .S .RS WORDS U.R DUMP ?
 ; FAST FORTH TERMINAL configuration
 ;-------------------------------------------------------------------------------
 
-TERMINALBAUDRATE    .equ 115200 ; choose value considering the frequency and the UART2USB bridge, see explanations below.
+TERMINALBAUDRATE    .equ 5000000 ; choose value considering the frequency and the UART2USB bridge, see explanations below.
+                    .include "TERMINALBAUDRATE.inc"
 
 ;HALFDUPLEX          ; to use FAST FORTH with half duplex terminal
 
 TERMINAL3WIRES      ;;               enable 3 wires (GND,TX,RX) with XON/XOFF software flow control (PL2303TA/HXD, CP2102)
-TERMINAL4WIRES      ; + 18 bytes    enable 4 wires with hardware flow control on RX with RTS (PL2303TA/HXD, FT232RL)
+TERMINAL4WIRES      ;; + 18 bytes    enable 4 wires with hardware flow control on RX with RTS (PL2303TA/HXD, FT232RL)
 ;                                    this RTS pin may be permanently wired on SBWTCK/TEST pin without disturbing SBW 2 wires programming
 ;TERMINAL5WIRES      ; +  6 bytes    enable 5 wires with hardware flow control on RX/TX with RTS/CTS (PL2303TA/HXD, FT232RL)...
 
@@ -247,7 +250,7 @@ TERMINAL4WIRES      ; + 18 bytes    enable 4 wires with hardware flow control on
 
 ; ------------------------------------------------------------------------------
 
-    .include "Target.inc" ; to define target config: I/O, memory, SFR, vectors, TERMINAL eUSCI, SD_Card eUSCI, LF_XTAL,
+    .include "Device.inc" ; to define target config: I/O, memory, SFR, vectors, TERMINAL eUSCI, SD_Card eUSCI, LF_XTAL,
 
     .include "ForthThreads.mac" ; init vocabulary pointers
 
@@ -331,23 +334,29 @@ LAST_THREAD     .equ BASE_HOLD+6    ; used by QREVEAL
 LAST_CFA        .equ BASE_HOLD+8
 LAST_PSP        .equ BASE_HOLD+10
 STATE           .equ BASE_HOLD+12   ; Interpreter state
-SAV_CURRENT     .equ BASE_HOLD+14   ; preserve CURRENT during create assembler words
-OPCODE          .equ BASE_HOLD+16   ; OPCODE adr;                   also used as lure by :NONAME
-ASMTYPE         .equ BASE_HOLD+18   ; keep the opcode complement;   also used as lure by :NONAME
-SOURCE          .equ BASE_HOLD+20       
-SOURCE_LEN      .equ BASE_HOLD+20       
-SOURCE_ADR      .equ BASE_HOLD+22   ; len, addr of input stream
-TOIN            .equ BASE_HOLD+24   ; CurrentInputBuffer pointer
-DDP             .equ BASE_HOLD+26   ; dictionnary pointer
-LASTVOC         .equ BASE_HOLD+28   ; keep VOC-LINK
-CONTEXT         .equ BASE_HOLD+30   ; CONTEXT dictionnary space (8 CELLS)
-CURRENT         .equ BASE_HOLD+46   ; CURRENT dictionnary ptr
-BASE            .equ BASE_HOLD+48   
-LINE            .equ BASE_HOLD+50   ; line in interpretation (initialized by NOECHO)
-
-; ------------------------------------- ;
-; RAMSTART + $1E6 : free to user        ;
-; ------------------------------------- ;
+SOURCE          .equ BASE_HOLD+14       
+SOURCE_LEN      .equ BASE_HOLD+14       
+SOURCE_ADR      .equ BASE_HOLD+16   ; len, addr of input stream
+TOIN            .equ BASE_HOLD+18   ; CurrentInputBuffer pointer
+DDP             .equ BASE_HOLD+20   ; dictionnary pointer
+LASTVOC         .equ BASE_HOLD+22   ; keep VOC-LINK
+CONTEXT         .equ BASE_HOLD+24   ; CONTEXT dictionnary space (8 CELLS)
+CURRENT         .equ BASE_HOLD+40   ; CURRENT dictionnary ptr
+BASE            .equ BASE_HOLD+42   
+LINE            .equ BASE_HOLD+44   ; line in interpretation (initialized by NOECHO)
+; --------------------------------------------------------------;
+; RAMSTART + $1E0 : free for user after source file compilation  ;
+; --------------------------------------------------------------;
+SAV_CURRENT     .equ BASE_HOLD+46   ; preserve CURRENT during create assembler words
+ASMBW1          .equ BASE_HOLD+48
+ASMBW2          .equ BASE_HOLD+50
+ASMBW3          .equ BASE_HOLD+52
+ASMFW1          .equ BASE_HOLD+54
+ASMFW2          .equ BASE_HOLD+56
+ASMFW3          .equ BASE_HOLD+58
+; ----------------------------------;
+; RAMSTART + $1EE : free for user    ;
+; ----------------------------------;
 
 
 ; --------------------------------------------------
@@ -370,7 +379,8 @@ SD_BUFEND       .equ SD_BUF + 200h   ; 512bytes
 ; --------------------------
 
 INI_THREAD      .word THREADS               ; used by ADDON_UTILITY.f
-INI_TERM        .word TERMINAL_INT          ;
+TERMBRW_RST     .word TERMBRW_INI           ; set by TERMINALBAUDRATE.inc
+TERMMCTLW_RST   .word TERMMCTLW_INI         ; set by TERMINALBAUDRATE.inc
 
     .IF FREQUENCY = 0.25
 FREQ_KHZ        .word 250                   ;
@@ -379,7 +389,6 @@ FREQ_KHZ        .word 500                   ;
     .ELSE
 FREQ_KHZ        .word FREQUENCY*1000        ; user use
     .ENDIF
-HECTOBAUDS      .word TERMINALBAUDRATE/100  ; user use
 
 SAVE_SYSRSTIV   .word 05                    ; value to identify first start after core recompiling
 LPM_MODE        .word CPUOFF+GIE            ; LPM0 is the default mode
@@ -400,6 +409,7 @@ INIVOC          .word lastvoclink           ; define RST_STATE
     .ELSEIF
                 .word 0,0
     .ENDIF ; SD_CARD_LOADER
+GPFLAGS         .word 0
 
 INFO_BASE_END
 
@@ -411,6 +421,7 @@ INFO_BASE_END
     .org INFO_BASE_END
     .ELSE               ; if RAM >= 2k the variables below are in RAM
     .org SD_BUFEND
+                .word 0 ; guard
     .ENDIF
 
     .IFDEF SD_CARD_LOADER
@@ -420,17 +431,17 @@ SD_ORG_DATA
 ; ---------------------------------------
 ; FAT FileSystemInfos
 ; ---------------------------------------
-FATtype         .equ SD_ORG_DATA+2
-BS_FirstSectorL .equ SD_ORG_DATA+4  ; init by SD_Init, used by RW_Sector_CMD
-BS_FirstSectorH .equ SD_ORG_DATA+6  ; init by SD_Init, used by RW_Sector_CMD
-OrgFAT1         .equ SD_ORG_DATA+8  ; init by SD_Init,
-FATSize         .equ SD_ORG_DATA+10 ; init by SD_Init,
-OrgFAT2         .equ SD_ORG_DATA+12 ; init by SD_Init,
-OrgRootDIR      .equ SD_ORG_DATA+14 ; init by SD_Init, (FAT16 specific)
-OrgClusters     .equ SD_ORG_DATA+16 ; init by SD_Init, Sector of Cluster 0
-SecPerClus      .equ SD_ORG_DATA+18 ; init by SD_Init, byte size
-
-SD_LOW_LEVEL    .equ SD_ORG_DATA+20
+FATtype         .equ SD_ORG_DATA+0
+BS_FirstSectorL .equ SD_ORG_DATA+2  ; init by SD_Init, used by RW_Sector_CMD
+BS_FirstSectorH .equ SD_ORG_DATA+4  ; init by SD_Init, used by RW_Sector_CMD
+OrgFAT1         .equ SD_ORG_DATA+6  ; init by SD_Init,
+FATSize         .equ SD_ORG_DATA+ ; init by SD_Init,
+OrgFAT2         .equ SD_ORG_DATA+10 ; init by SD_Init,
+OrgRootDIR      .equ SD_ORG_DATA+12 ; init by SD_Init, (FAT16 specific)
+OrgClusters     .equ SD_ORG_DATA+14 ; init by SD_Init, Sector of Cluster 0
+SecPerClus      .equ SD_ORG_DATA+16 ; init by SD_Init, byte size
+
+SD_LOW_LEVEL    .equ SD_ORG_DATA+18
 ; ---------------------------------------
 ; SD command
 ; ---------------------------------------
@@ -517,6 +528,8 @@ SDIB_I2CADR     .equ PAD_ORG-4
 SDIB_I2CCNT     .equ PAD_ORG-2
 SDIB_ORG        .equ PAD_ORG
 
+SD_END_DATA     .equ LoadStackEnd
+SD_LEN_DATA     .equ SD_END_DATA-SD_ORG_DATA
 
     .ELSEIF     ; RAM_Size > 1k all is in RAM
 
@@ -534,9 +547,10 @@ SDIB_I2CCNT     .equ SDIB_ORG-2
 SDIB_ORG        .equ LoadStackEnd+4
 SDIB_LEN        .equ 84             ; = TIB_LEN = PAD_LEN
 
+SD_END_DATA     .equ SDIB_ORG+SDIB_LEN
+
     .ENDIF ; RAM_Size
 
-SD_END_DATA     .equ LoadStackEnd
 
     .ENDIF ; SD_CARD_LOADER
 
@@ -974,7 +988,7 @@ xdo         MOV #8000h,X    ;2 compute 8000h-limit "fudge factor"
             MOV TOS,Y       ;1 loop ctr = index+fudge
             MOV @PSP+,TOS   ;2 pop new TOS
             ADD X,Y         ;1
-            .word 01519h    ;4 PUSHM X,Y, i.e. PUSHM LIMIT, INDEX
+            PUSHM #2,X      ;4 PUSHM X,Y, i.e. PUSHM LIMIT, INDEX
             mNEXT           ;4
 
 ;Z (+loop)   n --   R: sys1 sys2 --  | sys1 sys2
@@ -1102,7 +1116,7 @@ LESSNUM     MOV #BASE_HOLD,&HP
 ;https://forth-standard.org/standard/core/UMDivMOD
 ; UM/MOD   udlo|udhi u1 -- r q   unsigned 32/16->16
             FORTHWORD "UM/MOD"
-UMSLASHMOD  PUSH #DROP          ; 3 return address for MU/MOD
+UMSLASHMOD  PUSH #DROP          ;3 as return address for MU/MOD
 
 ; unsigned 32-BIT DiViDend : 16-BIT DIVisor --> 32-BIT QUOTient, 16-BIT REMainder
 ; 2 times faster if DVDhi = 0 (it's the general case)
@@ -1181,7 +1195,7 @@ NUMS        mDOCOL
             mNEXT               ;4 10 words, about 241/417 cycles/char
 
 ;https://forth-standard.org/standard/core/num-end
-;C #>    udlo:udhi=0 -- c-addr u    end conversion, get string
+;C #>    udlo:udhi -- c-addr u    end conversion, get string
             FORTHWORD "#>"
 NUMGREATER  MOV &HP,0(PSP)
             MOV #BASE_HOLD,TOS
@@ -1259,9 +1273,13 @@ CCOMMA      MOV &DDP,W
 ; TERMINAL I/O, input part
 ; ------------------------------------------------------------------------------
 
-;Z (KEY)    -- c      get character from the terminal
-            FORTHWORD "(KEY)"
-PARENKEY    MOV &TERMRXBUF,Y        ; empty buffer
+
+;https://forth-standard.org/standard/core/KEY
+;C KEY      -- c      wait character from input device ; primary DEFERred word
+            FORTHWORD "KEY"
+KEY         MOV @PC+,PC
+            .word   BODYKEY
+BODYKEY     MOV &TERMRXBUF,Y        ; empty buffer
             SUB #2,PSP              ; 1  push old TOS..
             MOV TOS,0(PSP)          ; 4  ..onto stack
             CALL #RXON
@@ -1271,12 +1289,6 @@ KEYLOOP     BIT #UCRXIFG,&TERMIFG   ; loop if bit0 = 0 in interupt flag register
             CALL #RXOFF             ;
             mNEXT
 
-;https://forth-standard.org/standard/core/KEY
-;C KEY      -- c      wait character from input device ; deferred word
-            FORTHWORD "KEY"
-KEY         MOV @PC+,PC
-            .word   PARENKEY
-
 ;-------------------------------------------------------------------------------
 ; INTERPRETER INPUT, the kernel of kernel !
 ;-------------------------------------------------------------------------------
@@ -1291,7 +1303,7 @@ DEFER_INPUT ; CIB (Current Input Buffer) and ACCEPT must to be redirected for SD
 ; CIB           --  addr          of Current Input Buffer
             FORTHWORD "CIB"
 FCIB        mDOCON
-            .WORD    TIB_ORG        ; constant, may be DEFERed as SDIB_ORG by OPEN.
+            .WORD    TIB_ORG        ; constant, may be DEFERred as SDIB_ORG by OPEN.
 
 ; : REFILL CIB DUP TIB_LEN ACCEPT ;   -- CIB CIB len    shared by QUIT and [ELSE]
 REFILL      SUB #6,PSP              ;2
@@ -1305,11 +1317,8 @@ REFILL      SUB #6,PSP              ;2
 ;C ACCEPT  addr addr len -- addr len'  get line at addr to interpret len' chars
             FORTHWORD "ACCEPT"
 ACCEPT      MOV @PC+,PC             ;3
-            .word   PARENACCEPT
-
-;C (ACCEPT)  addr addr len -- addr len'     get len' (up to len) chars from terminal (TERATERM.EXE) via USBtoUART bridge
-            FORTHWORD "(ACCEPT)"
-PARENACCEPT
+            .word   BODYACCEPT
+BODYACCEPT
 
     .ELSE
 
@@ -1347,7 +1356,7 @@ ACCEPT
     .ENDIF                          ;
             MOV #ENDACCEPT,S        ;2              S = ACCEPT XOFF return
             MOV #AKEYREAD1,T        ;2              T = default XON return
-            .word 152Dh             ;5              PUSHM IP,S,T, as IP ret, XOFF ret, XON ret
+            PUSHM #3,IP             ;5              PUSHM IP,S,T, as IP ret, XOFF ret, XON ret
             MOV TOS,W               ;1 -- addr len
             MOV @PSP,TOS            ;2 -- org ptr                                             )
             ADD TOS,W               ;1 -- org ptr   W=Bound                                   )
@@ -1361,15 +1370,15 @@ ACCEPT
             JNZ RXON                ;2                   no : RXON return = AKEYREAD1, to process first char of new line.
 ACCEPTNEXT  ADD #2,RSP              ;1                   yes: remove AKEYREAD1 as XON return,
             MOV #SLEEP,X            ;2                        and set XON return = SLEEP
-            .word 154Dh             ;7                        PUSHM IP,S,T,W,X before SLEEP (and so WAKE on any interrupts)
+            PUSHM #5,IP             ;7                        PUSHM IP,S,T,W,X before SLEEP (and so WAKE on any interrupts)
 ; ----------------------------------;
 RXON                                ;
 ; ----------------------------------;
     .IFDEF TERMINAL3WIRES           ;
-    .IF TERMINALBAUDRATE/FREQUENCY <230400
+;    .IF TERMINALBAUDRATE/FREQUENCY <230400
 RXON_LOOP   BIT #UCTXIFG,&TERMIFG   ;3  wait the sending end of XON, useless at high baudrates
             JZ RXON_LOOP            ;2
-    .ENDIF
+;    .ENDIF
             MOV #17,&TERMTXBUF      ;4  move char XON into TX_buf
     .ENDIF                          ;
     .IFDEF TERMINAL4WIRES           ;
@@ -1398,12 +1407,8 @@ RXOFF                               ;
 ; ----------------------------------;
     ASMWORD "SLEEP"                 ; may be redirected
 SLEEP       MOV @PC+,PC             ;3
-            .word   PARENSLEEP      ;
-; ----------------------------------;
-
-; ----------------------------------;
-    ASMWORD "(SLEEP)"               ;
-PARENSLEEP  BIS &LPM_MODE,SR        ;3  enter in LPMx sleep mode with GIE=1
+            .word   BODYSLEEP      ;
+BODYSLEEP  BIS &LPM_MODE,SR        ;3  enter in LPMx sleep mode with GIE=1
 ; ----------------------------------;   default FAST FORTH mode (for its input terminal use) : LPM0.
 
 ;###############################################################################################################
@@ -1440,7 +1445,7 @@ TERMINAL_INT                        ; <--- TEMR RX interrupt vector, delayed by
 ; (ACCEPT) part II under interrupt  ; Org Ptr -- len'
 ; ----------------------------------;
             ADD #4,RSP              ;1  remove SR and PC from stack, SR flags are lost (unused by FORTH interpreter)
-            .word   173Ah           ;6  POPM ;W=buffer_bound, T=0Dh,S=20h, IP=AYEMIT_RET
+            POPM #4,IP              ;6  POPM W=buffer_bound, T=0Dh,S=20h, IP=AYEMIT_RET
 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv;
 ; starts the 2th stopwatch          ;
 ; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
@@ -1473,10 +1478,10 @@ ASTORETEST  CMP W,TOS               ; 1 Bound is reached ?
             MOV.B Y,0(TOS)          ; 3 no: store char @ Ptr, send echo then loopback
             ADD #1,TOS              ; 1     increment Ptr
 YEMIT1
-    .IF TERMINALBAUDRATE/FREQUENCY <230401
+;    .IF TERMINALBAUDRATE/FREQUENCY <230401
             BIT #UCTXIFG,&TERMIFG   ; 3 wait the sending end of previous char (sent before ACCEPT), useless at high baudrates
             JZ YEMIT1               ; 2
-    .ENDIF
+;    .ENDIF
 YEMIT2
     .IFDEF  TERMINAL5WIRES          ;
             BIT.B #CTS,&HANDSHAKIN  ; 3
@@ -1507,7 +1512,7 @@ ACCEPTEND   SUB @PSP+,TOS           ; Org Ptr -- len'
             MOV @RSP+,IP            ; 2 and continue with INTERPRET with GIE=0.
                                     ; So FORTH machine is protected against any interrupt...
     .IFDEF TOTAL
-            .word 1734h             ;6              pop R4,R5,R6,R7
+            POPM #4,R7              ;6              pop R4,R5,R6,R7
     .ENDIF
             mNEXT                   ; ...until next falling down to LPMx mode of (ACCEPT) part1,
 ; **********************************;    i.e. when the FORTH interpreter has no more to do.
@@ -1516,22 +1521,17 @@ ACCEPTEND   SUB @PSP+,TOS           ; Org Ptr -- len'
 ; TERMINAL I/O, output part
 ; ------------------------------------------------------------------------------
 
-
-;Z (EMIT)   c --    output character (byte) to the terminal
-; hardware or software control on TX flow seems not necessary with UARTtoUSB bridges because
-; they stop TX when their RX buffer is full. So no problem when the terminal input is echoed to output.
-            FORTHWORD "(EMIT)"
-PARENEMIT   MOV TOS,Y               ; 1
+;https://forth-standard.org/standard/core/EMIT
+;C EMIT     c --    output character to the output device ; primary DEFERred word
+            FORTHWORD "EMIT"
+EMIT        MOV @PC+,PC             ;3  15~
+            .word   BODYEMIT
+BODYEMIT   MOV TOS,Y               ; 1
             MOV @PSP+,TOS           ; 2
             JMP YEMIT1              ;9  12~
 
     .ENDIF  ; HALFDUPLEX
 
-;https://forth-standard.org/standard/core/EMIT
-;C EMIT     c --    output character to the output device ; deferred word
-            FORTHWORD "EMIT"
-EMIT        MOV @PC+,PC             ;3  15~
-            .word   PARENEMIT
 
 ;Z ECHO     --      connect console output (default)
             FORTHWORD "ECHO"
@@ -1585,23 +1585,20 @@ TYPE_NEXT   FORTHtoASM
             SUB #2,IP               ;1
             SUB #1,2(RSP)           ;4 len-1
             JNZ TYPELOOP            ;2
-            .word   0171Dh          ;5 POPM IP,TOS
+            POPM #2,TOS             ;4 POPM IP,TOS
 TWODROP     ADD #2,PSP              ;
             MOV @PSP+,TOS           ; -- 
             mNEXT                   ;
 
-; (CR)     --               send CR+LF to the output terminal (via TYPE)
-            FORTHWORD "(CR)"
-PARENCR     mDOCOL
-            .word   XSQUOTE
-            .byte   2,13,10
-            .word   TYPE,EXIT
-
 ;https://forth-standard.org/standard/core/CR
 ;C CR      --               send CR to the output device
             FORTHWORD "CR"
 CR          MOV @PC+,PC
-            .word   PARENCR
+            .word   BODYCR
+BODYCR     mDOCOL
+            .word   XSQUOTE
+            .byte   2,13,10
+            .word   TYPE,EXIT
 
 ; ------------------------------------------------------------------------------
 ; STRINGS PROCESSING
@@ -1901,7 +1898,7 @@ QQNUMDP     CMP.B #'.',0(S)         ;4                                  rejected
     .ENDIF
 
 ; ----------------------------------;88
-QNUMNEXT1   .word   0172Bh          ;4 -- c-addr ud2lo-hi x cnt2        POPM T,S,IP  S = sign flag = {-1;0}
+QNUMNEXT1   POPM #3,IP              ;4 -- c-addr ud2lo-hi x cnt2        POPM T,S,IP  S = sign flag = {-1;0}
             MOV S,TOS               ;1 -- c-addr ud2lo-hi x sign
             MOV T,&BASE             ;3
             JZ QNUMOK               ;2 -- c-addr ud2lo-hi x sign        conversion OK
@@ -1980,7 +1977,7 @@ UMSTARNEXT2 FORTHtoASM              ; -- ud1lo ud1hi x ud4hi    r-- IP adr count
 MPLUS       ADDC @RSP+,TOS          ; -- ud1lo ud1hi x ud2hi    TOS = ud4hi+ud3lo+carry = ud2hi
             MOV X,4(PSP)            ; -- ud2lo ud1hi x ud2hi           
             MOV TOS,2(PSP)          ; -- ud2lo ud2hi x x        R-- IP adr count 
-            .word 172Bh             ; -- ud2lo ud2hi x x        T=count, S=adr  POPM T,S,IP
+            POPM #3,IP              ; -- ud2lo ud2hi x x        T=count, S=adr  POPM T,S,IP
 TONUMPLUS   ADD #1,S                ;
             SUB #1,T                ;
             JNZ TONUMLOOP           ; -- ud2lo ud2hi x x        S=adr+1, T=count-1, X=ud2lo
@@ -2083,7 +2080,7 @@ QNUMDPFOUND SUB #2,IP               ;1                                      set
     .ENDIF
 
 ; ----------------------------------;97
-QNUMNEXT1   .word 0172Bh            ;4 -- c-addr ud2lo-hi x cnt2        POPM T,S,IP   S = sign flag = {-1;0}
+QNUMNEXT1   POPM #3,IP              ;4 -- c-addr ud2lo-hi x cnt2        POPM T,S,IP   S = sign flag = {-1;0}
             MOV S,TOS               ;1 -- c-addr ud2lo-hi x sign
             MOV T,&BASE             ;3
             JZ QNUMOK               ;2 -- c-addr ud2lo-hi x sign        conversion OK
@@ -2196,7 +2193,7 @@ EVALUATE    MOV #SOURCE_LEN,X       ;2
             MOV @X+,S               ;2 S = SOURCE_LEN
             MOV @X+,T               ;2 T = SOURCE_ADR
             MOV @X+,W               ;2 W = TOIN
-            .word 153Dh             ;6 PUSHM IP,S,T,W
+            PUSHM #4,IP             ;6 PUSHM IP,S,T,W
             ASMtoFORTH
             .word   INTERPRET
             FORTHtoASM
@@ -2236,15 +2233,13 @@ BOOT    MOV #RSTACK,RSP
 ; ----------------------------------;
 
 ;https://forth-standard.org/standard/core/QUIT
-;c QUIT  --     interpret line by line the input stream, but may be redirected as here:
+;c QUIT  --     interpret line by line the input stream, primary DEFERred word
         FORTHWORD "QUIT"
 QUIT    MOV @PC+,PC
-        .word   BOOT
+        .word   BODYQUIT           ; this word may be replaced by BOOT
+BODYQUIT
 
-        FORTHWORD "(QUIT)"
-PARENQUIT
-
-    .ELSE ; no BOOTLOADER, QUIT is not defered
+    .ELSE ; no BOOTLOADER, QUIT is not DEFERred
 ;https://forth-standard.org/standard/core/QUIT
 ;c QUIT  --     interpret line by line the input stream
         FORTHWORD "QUIT"
@@ -2282,26 +2277,26 @@ QUIT4       .word   INTERPRET
 ABORT       MOV #PSTACK,PSP
             JMP QUIT
 
-WIP_DEFER   ; WIPE resets ALL factory defered words
-            MOV #PARENWARM,&WARM+2      ; (WARM) is WARM    kill user interrupts init
-            MOV #PARENSLEEP,&SLEEP+2    ; (SLEEP) is SLEEP  kill user background task
-
-QAB_DEFER   ; QABORT resets some defered words 
-            MOV #PARENEMIT,&EMIT+2      ;4 (EMIT) is EMIT   default console output
-            MOV #PARENCR,&CR+2          ;4 (CR) is CR       default CR
-            MOV #PARENKEY,&KEY+2        ;4 (KEY) is KEY     default KEY
+WIP_DEFER   ; WIPE resets ALL factory primary DEFERred words
+            MOV #BODYWARM,&WARM+2      ; (WARM) is WARM    kill user interrupts init
+            MOV #BODYSLEEP,&SLEEP+2    ; (SLEEP) is SLEEP  kill user background task
+QAB_DEFER   ; QABORT resets some primary DEFERred words 
+            MOV #BODYEMIT,&EMIT+2      ;4 (EMIT) is EMIT   default console output
+            MOV #BODYCR,&CR+2          ;4 (CR) is CR       default CR
+            MOV #BODYKEY,&KEY+2        ;4 (KEY) is KEY     default KEY
 
     .IFDEF DEFER_INPUT                  ;  true if SD_LOADER
             MOV #TIB_ORG,&FCIB+2        ;4 TIB is CIB  (Current Input Buffer)
-            MOV #PARENACCEPT,&ACCEPT+2  ;4 (ACCEPT) is ACCEPT
+            MOV #BODYACCEPT,&ACCEPT+2  ;4 (ACCEPT) is ACCEPT
     .ENDIF
     .IFDEF MSP430ASSEMBLER          ; reset all branch labels
-            MOV #0,&CLRBW1          ;3
-            MOV #0,&CLRBW2          ;3
-            MOV #0,&CLRBW3          ;3
-            MOV #0,&CLRFW1          ;3
-            MOV #0,&CLRFW2          ;3
-            MOV #0,&CLRFW3          ;3
+            MOV #10,Y
+            MOV Y,&BASE
+RAZASM      MOV #0,ASMFW1(Y)
+            SUB #2,Y
+            JHS RAZASM
+    .ELSE
+            MOV #10,&BASE           ;4
     .ENDIF  
             MOV #10,&BASE           ;4
             RET
@@ -2331,7 +2326,7 @@ QABORTCLOSEND
 ; ----------------------------------;
 QABORTYESNOECHO                     ; <== WARM jumps here, thus, if NOECHO, TERMINAL can be disconnected without freezing the app
 ; ----------------------------------;
-            CALL #QAB_DEFER         ; restore default deferred words ....else WARM and SLEEP.
+            CALL #QAB_DEFER         ; restore default part of primary DEFERred words ....except WARM and SLEEP.
 ; ----------------------------------;
 QABORTTERM                          ; wait the end of source file downloading
 ; ----------------------------------;
@@ -2503,14 +2498,15 @@ SEMICOLON   CMP #0,&STATE           ; in interpret mode semicolon becomes a comm
 ;https://forth-standard.org/standard/core/ColonNONAME
 ;CE :NONAME        -- xt
         FORTHWORD ":NONAME"
-            SUB #2,PSP
+COLONNONAME SUB #2,PSP
             MOV TOS,0(PSP)
             MOV &DDP,TOS
             MOV TOS,W
-            MOV #OPCODE,X           ; X = OPCODE as lure for semicolon LAST_THREAD REVEAL
-            MOV #ASMTYPE,Y          ; Y = ASMTYPE as lure for semicolon LAST_NFA REVEAL
-            CALL #HEADEREND
-    .ENDIF 
+            MOV #PAIN,X             ; PAIN is a read only register in all MSP430FRxxxx devices...
+            MOV X,Y                 ; so, MOV Y,0(X) writes to a read only register = lure for semicolon LAST_THREAD REVEAL...      
+            ADD #2,Y                ; so, MOV @X,-2(Y) writes to same register = lure for semicolon LAST_NFA REVEAL...
+            CALL #HEADEREND         ; ...because we don't want write preamble of word in dictionnary!
+    .ENDIF ; NONAME
 COLONNEXT
     .SWITCH DTC
     .CASE 1
@@ -2528,7 +2524,7 @@ COLONNEXT
     .ENDCASE ; of DTC
             MOV #-1,&STATE          ; enter compiling state
 SAVE_PSP    MOV PSP,&LAST_PSP       ; save PSP for check compiling, used by QREVEAL
-            mNEXT
+PFA_DEFER   mNEXT
 
 ;https://forth-standard.org/standard/core/Colon
 ;C : <name>     --      begin a colon definition
@@ -2556,7 +2552,10 @@ HEADER      mDOCOL
             ADD TOS,X               ; -- xxx        TOS= Thread   X=VOC_PFAx = thread x of VOC_PFA of CURRENT
     .ENDCASE
             MOV @PSP+,TOS           ; --
-            MOV @RSP+,IP  
+            MOV @RSP+,IP
+            MOV #4030h,0(W)        ;4              by default, HEADER create a DEFERred word: CFA = MOV @PC+,PC = BR...
+            MOV #PFA_DEFER,2(W)    ;4              by default, HEADER create a DEFERred word: PFA = address of NEXT to do nothing.
+  
 HEADEREND   MOV Y,&LAST_NFA         ; --            NFA --> LAST_NFA            used by QREVEAL, IMMEDIATE
             MOV X,&LAST_THREAD      ; --            VOC_PFAx --> LAST_THREAD    used by QREVEAL
             MOV W,&LAST_CFA         ; --            HERE=CFA --> LAST_CFA       used by DOES>, RECURSE
@@ -2622,7 +2621,7 @@ DOES        MOV &LAST_CFA,W         ; W = CFA of CREATEd word
             MOV #DODOES,0(W)        ; replace CFA (DOCON) by new CFA (DODOES)
             MOV IP,2(W)             ; replace PFA by the address after DOES> as execution address
             MOV @RSP+,IP            ; exit of the new created word
-PFA_DEFER   mNEXT
+            mNEXT
 
 ;https://forth-standard.org/standard/core/DEFER
 ;C DEFER "<spaces>name"   -- 
@@ -2634,11 +2633,17 @@ PFA_DEFER   mNEXT
 ;until the phrase ' word IS name is executed, causing a new value of xt to be assigned to name.
 
             FORTHWORD "DEFER"
-DEFER       CALL #HEADER   
-            MOV #4030h,-4(W)        ;4  CFA = MOV @PC+,PC = BR...
-            MOV #PFA_DEFER,-2(W)    ;4  PFA = address of NEXT: created word does nothing by default
+DEFER       CALL #HEADER             ; that create a secondary DEFERred word (whithout subsequent code)
+;            MOV #4030h,-4(W)        ;4  CFA = MOV @PC+,PC = BR...
+;            MOV #PFA_DEFER,-2(W)    ;4  PFA = address of NEXT: created word does nothing by default
             JMP REVEAL             
 
+;https://forth-standard.org/standard/core/toBODY
+; >BODY     -- PFA      leave BODY of a CREATEd or a primary DEFERred word
+            FORTHWORD ">BODY"
+            ADD     #4,TOS
+            mNEXT
+
     .IFDEF CONDCOMP
 
 ; ------------------------------------------------------------------------------
@@ -2840,9 +2845,9 @@ VOCDOES     .word   LIT,CONTEXT,STORE
     .IFDEF VOCABULARY_SET
             FORTHWORD "FORTH"
     .ENDIF ; VOCABULARY_SET
-FORTH       mDODOES                     ; leave FORTH_BODY on the stack and run VOCDOES
+FORTH       mDODOES                     ; leave BODYFORTH on the stack and run VOCDOES
             .word   VOCDOES
-FORTH_BODY  .word   lastforthword
+BODYFORTH   .word   lastforthword
     .SWITCH THREADS
     .CASE   2
             .word   lastforthword1
@@ -2916,7 +2921,7 @@ voclink         .set    $-2
     .IFDEF VOCABULARY_SET
             FORTHWORD "ALSO"
     .ENDIF ; VOCABULARY_SET
-ALSO        MOV #14,W               ; -- move up 7 words
+ALSO        MOV #12,W               ; -- move up 6 words, 8th word of CONTEXT area must remain to 0
             MOV #CONTEXT,X          ; X=src
             MOV #CONTEXT+2,Y        ; Y=dst
             JMP MOVEUP              ; src < dst
@@ -2925,7 +2930,7 @@ ALSO        MOV #14,W               ; -- move up 7 words
     .IFDEF VOCABULARY_SET
             FORTHWORD "PREVIOUS"
     .ENDIF ; VOCABULARY_SET
-PREVIOUS    MOV #14,W               ; -- move down 7 words
+PREVIOUS    MOV #14,W               ; move down 7 words, with recopy of the 8th word equal to 0
             MOV #CONTEXT+2,X        ; X=src
             MOV #CONTEXT,Y          ; Y=dst
             JMP MOVEDOWN            ; src > dst
@@ -3008,13 +3013,24 @@ RST_HERE    MOV &LASTVOC,&INIVOC
             MOV &DDP,&INIDP
             JMP PWR_HERE            ; ...and also for power ON...
 
+;            FORTHWORD "WIPE"        ; restore the program as it was in forthMSP430FR.txt file
+;WIPE        MOV #SIGNATURES,X       ; reset JTAG and BSL signatures   ; unlock JTAG, SBW and BSL
+;SIGNLOOP    MOV #-1,0(X)            ; reset signature; WARNING ! DON'T CHANGE THIS IMMEDIATE VALUE !
+;            ADD #2,X
+;            CMP #INTVECT,X
+;            JNZ SIGNLOOP
+;            CALL #WIP_DEFER         ; set default execute part of all factory primary DEFERred words
+;            MOV #ROMDICT,&INIDP     ; reinit this 2 factory values
+;            MOV #lastvoclink,&INIVOC
+;            JMP RST_STATE           ; then execute RST_STATE and PWR_STATE
+
             FORTHWORD "WIPE"        ; restore the program as it was in forthMSP430FR.txt file
-WIPE        MOV #SIGNATURES,X       ; reset JTAG and BSL signatures   ; unlock JTAG, SBW and BSL
-SIGNLOOP    MOV #-1,0(X)            ; reset signature; WARNING ! DON'T CHANGE THIS IMMEDIATE VALUE !
-            ADD #2,X
-            CMP #INTVECT,X
+WIPE                                ; reset JTAG and BSL signatures   ; unlock JTAG, SBW and BSL
+            MOV #16,X               ; max known SIGNATURES length = 10
+SIGNLOOP    SUB #2,X
+            MOV #-1,SIGNATURES(X)   ; reset signature; WARNING ! DON'T CHANGE THIS IMMEDIATE VALUE !
             JNZ SIGNLOOP
-            CALL #WIP_DEFER         ; reinit all DEFERed words
+            CALL #WIP_DEFER         ; set default execute part of all factory primary DEFERred words
             MOV #ROMDICT,&INIDP     ; reinit this 2 factory values
             MOV #lastvoclink,&INIVOC
             JMP RST_STATE           ; then execute RST_STATE and PWR_STATE
@@ -3023,11 +3039,12 @@ SIGNLOOP    MOV #-1,0(X)            ; reset signature; WARNING ! DON'T CHANGE TH
 ; forthMSP430FR : WARM
 ; ------------------------------------------------------------------------------
 
-;Z (WARM)   --      ; init some user variables,
-                    ; print start message if ECHO is set,
-                    ; then ABORT
-            FORTHWORD "(WARM)"
-PARENWARM 
+;Z WARM   --    ; deferred word used to init your application
+                ; define this word:  : START ...init app here... LIT RECURSE IS WARM (WARM) ;
+            FORTHWORD "WARM"
+WARM        MOV @PC+,PC                 ;3
+            .word   BODYWARM
+BODYWARM 
 ;            SUB     #4,PSP
 ;            MOV     &SYSSNIV,0(PSP)
 ;            MOV     &SYSUNIV,2(PSP)
@@ -3048,43 +3065,36 @@ PARENWARM
             .word   QABORTYESNOECHO     ; NOECHO state enables any app to execute COLD or WARM without terminal connexion
 
 
-;Z WARM   --    ; deferred word used to init your application
-                ; define this word:  : START ...init app here... LIT RECURSE IS WARM (WARM) ;
-            FORTHWORD "WARM"
-WARM        MOV @PC+,PC                 ;3
-            .word   PARENWARM
 
 ;-------------------------------------------------------------------------------
-; RESET : Target Init, limited to FORTH usage : I/O, FRAM, RTC
-; all others I/O are set as input with pullup resistor
+; RESET : Initialisation limited to FORTH usage : I/O, RAM, RTC
+; all unused I/O are set as input with pullup resistor
 ;-------------------------------------------------------------------------------
 
 ;Z COLD     --      performs a software reset
             FORTHWORD "COLD"
 COLD        MOV #0A500h+PMMSWBOR,&PMMCTL0
 
-
 RESET
     .include "Target.asm"   ; include target specific init code
 
 
-; reset all interrupt vectors to RESET vector
-            MOV #RESET,W            ; W = reset vector
-            MOV #INTVECT,X          ; interrupt vectors base address
-RESETINT    MOV W,0(X)           
-            ADD #2,X             
-            JNZ RESETINT            ; endloop when X = 0
+; fill all interrupt vectors with RESET
+            MOV #VECTLEN,X          ; length of vectors area    
+RESETINT    SUB #2,X
+            MOV #RESET,INTVECT(X)   ; begin at end of area          
+            JNZ RESETINT            ; endloop when INTVECT(X) = INTVECT
 
 ; reset default TERMINAL vector interrupt and LPM0 mode for terminal use
-            MOV &INI_TERM,&TERMVEC
+            MOV #TERMINAL_INT,&TERMVEC
             MOV #CPUOFF+GIE,&LPM_MODE
 
 ; init RAM
-            MOV #RAMSTART,X
-INITRAM     MOV #0,0(X)
-            ADD #2,X
-            CMP #RAMEND,X
-            JLO INITRAM             ; 8~ loop
+            MOV #RAMLEN,X
+INITRAM     SUB #2,X
+            MOV #0,RAMSTART(X)
+            JNZ INITRAM             ; 6~ loop
+
 ;-------------------------------------------------------------------------------
 ; RESET : INIT FORTH machine
 ;-------------------------------------------------------------------------------
@@ -3120,9 +3130,8 @@ TERM_INIT
 ; RESET : INIT TERM_UART
 ;-------------------------------------------------------------------------------
     MOV #0081h,&TERMCTLW0           ; Configure TERM_UART  UCLK = SMCLK
-
-    .include "TERMINALBAUDRATE.asm" ; configure baudrate, no registers used
-
+    MOV &TERMBRW_RST,&TERMBRW       ; RST value in FRAM
+    MOV &TERMMCTLW_RST,&TERMMCTLW   ; RST value in FRAM
     BIS.B #TERM_BUS,&TERM_SEL       ; Configure pins TXD & RXD for TERM_UART (PORTx_SEL0 xor PORTx_SEL1)
                                     ; TERM_DIR is controlled by eUSCI_Ax module
     BIC #UCSWRST,&TERMCTLW0         ; release from reset...
index 716a2fe..f96051a 100644 (file)
 ;       MOV(.B) &EDE,&TON is coded as follow: MOV(.B) EDE(R2),TON(R2)   ; (R2=0), three words   AS=01, AD=1 x(reg) mode
 ; ----------------------------------------------------------------------
 
-; PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8, R7, R6, R5, R4 (TI's reg)
-; or          : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4 (FastForth reg)
-; example : PUSHM IP,Y or PUSHM R13,R8
+; PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+; PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
 
-; POPM  order :  R4, R5, R6, R7, R8, R9,R10,R11,R12,R13,R14,R15 (TI's reg)
-; or          :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP (FastForth reg)
-; example : POPM Y,IP or POPM R8,R13
+; example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+;
+; POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+; POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+; example : POPM #6,IP   pop Y,X,W,T,S,IP registers from return stack
 
 ; ----------------------------------------------------------------------
 ; DTCforthMSP430FR5xxx ASSEMBLER : STRUCTURE
@@ -49,9 +51,9 @@
     .IFDEF VOCABULARY_SET
             FORTHWORD "ASSEMBLER"
     .ENDIF ; VOCABULARY_SET
-ASSEMBLER       mDODOES             ; leave ASSEMBLER_BODY on the stack and run VOCDOES
+ASSEMBLER       mDODOES             ; leave BODYASSEMBLER on the stack and run VOCDOES
                 .word   VOCDOES
-ASSEMBLER_BODY  .word   lastasmword ; here is the structure created by VOCABULARY
+BODYASSEMBLER   .word   lastasmword ; here is the structure created by VOCABULARY
     .SWITCH THREADS
     .CASE   2
                 .word   lastasmword1
@@ -136,7 +138,7 @@ HI2LONEXT   .word   ALSO,ASSEMBLER
            FORTHWORD "CODE"     ; a CODE word must be finished with ENDCODE
 ASMCODE     CALL #HEADER        ;
             SUB #4,&DDP         ;
-            mDOCOL
+ASMCODE1    mDOCOL
             .word   SAVE_PSP
             .word   BRAN,HI2LONEXT
 
@@ -151,7 +153,7 @@ ENDCODE     mDOCOL
                                 ; ASM words are only usable in another ASSEMBLER words
                                 ; an ASM word must be finished with ENDASM
             MOV     &CURRENT,&SAV_CURRENT
-            MOV     #ASSEMBLER_BODY,&CURRENT
+            MOV     #BODYASSEMBLER,&CURRENT
             JMP     ASMCODE
 
             asmword "ENDASM"    ; end of an ASM word
@@ -198,6 +200,21 @@ COLON2      MOV #-1,&STATE      ; enter in compile state
             JMP COLON1
     .ENDCASE
 
+            .IFDEF NONAME
+
+            FORTHWORD "CODENNM"  ; CODENoNaMe is the assembly counterpart of :NONAME
+CODENNM     mDOCOL
+            .word COLONNONAME,LEFTBRACKET
+            FORTHtoASM
+            MOV @RSP+,IP
+            SUB #4,W            ; to remove DEFER snippet
+            MOV W,&DDP
+            JMP ASMCODE1
+
+            .ENDIF ; NONAME
+
+
+
 ;;Z SKIP      char -- addr               ; skip all occurring character 'char' in input stream
 ;            FORTHWORD "SKIP"            ; used by assembler to parse input stream
 SKIP:       MOV     #SOURCE_LEN,Y       ;
@@ -219,43 +236,47 @@ SKIPEND:    MOV     W,TOS               ; -- addr
 ; DTCforthMSP430FR5xxx ASSEMBLER : search argument "xxxx", IP is free
 ; ----------------------------------------------------------------------
 
-; Search ARG of "#xxxx,"                    ; <== PARAM10
-; Search ARG of "&xxxx,"                    ; <== PARAM111
-; Search ARG of "xxxx(REG),"                ; <== PARAM130
-; Search ARG of ",&xxxx"                    ; <== PARAM111 <== PARAM20
-; Search ARG of ",xxxx(REG)"                ; <== PARAM210
-SearchARG   ASMtoFORTH                      ; -- separator      search word first
-            .word   WORDD,FIND              ; -- c-addr
-            .word   QZBRAN,SearchARGW       ; -- c-addr         if found
-            .word   QNUMBER                 ;
-            .word   QBRAN,NotFound          ; -- c-addr
-            .word   AsmSrchEnd              ; -- value          goto end if number found
-SearchARGW  FORTHtoASM                      ; -- xt             xt = CFA
+; Search ARG of "#xxxx,"                ; <== PARAM10
+; Search ARG of "&xxxx,"                ; <== PARAM111
+; Search ARG of "xxxx(REG),"            ; <== PARAM130
+; Search ARG of ",&xxxx"                ; <== PARAM111 <== PARAM20
+; Search ARG of ",xxxx(REG)"            ; <== PARAM210
+SearchARG   PUSHM #2,S                ;                   PUSHM S,T
+            ASMtoFORTH                  ; -- separator      search word first
+            .word   WORDD,FIND          ; -- c-addr
+            .word   QZBRAN,SearchARGW   ; -- c-addr         if found
+            .word   QNUMBER             ;
+            .word   QBRAN,NotFound      ; -- c-addr         ABORT
+            .word   SearchEnd           ; -- value          goto end if number found
+SearchARGW  FORTHtoASM                  ; -- xt             xt = CFA
             MOV     @TOS,X
 QDOVAR      CMP     #DOVAR,X
             JNZ     QDOCON
-            ADD     #2,TOS                  ; remplace CFA by PFA for VARIABLE words
-            RET
+            ADD     #2,TOS              ; remplace CFA by PFA for VARIABLE words
+            JMP     SearchEnd
 QDOCON      CMP     #DOCON,X
             JNZ     QDODOES
-            MOV     2(TOS),TOS              ; remplace CFA by [PFA] for CONSTANT (and CREATEd) words
-            RET
+            MOV     2(TOS),TOS          ; remplace CFA by [PFA] for CONSTANT (and CREATEd) words
+            JMP     SearchEnd
 QDODOES     CMP     #DODOES,X
-            JNZ     AsmSrchEnd
-            ADD     #4,TOS                  ; leave BODY address for DOES words
-AsmSrchEnd  RET                             ;
+            JNZ     SearchEnd
+            ADD     #4,TOS              ; leave BODY address for DOES words
+SearchEnd   POPM    #2,S                ; POPM T,S
+            RET                         ;
 
 ; ----------------------------------------------------------------------
 ; DTCforthMSP430FR5xxx ASSEMBLER : search REG
 ; ----------------------------------------------------------------------
 
-; STOre ARGument xxxx of "xxxx(REG),"       ; <== PARAM130
-; STOre ARGument xxxx of ",xxxx(REG)"       ; <== PARAM210
-StoARGsearchREG
+; compute "xxxx(REG),"          ; <== PARAM130
+; compute ",xxxx(REG)"          ; <== PARAM210
+ComputeARGParenREG
+            MOV #'(',TOS        ; -- "("        as WORD separator to find xxxx of "xxxx(REG),"
+            CALL #SearchARG     ; -- xxxx       aborted if not found
             MOV &DDP,X
             ADD #2,&DDP
-            MOV TOS,0(X)                    ; -- xxxx       compile xxxx
-            MOV #')',TOS                    ; -- ")"        prepare separator to search REG of "xxxx(REG)"
+            MOV TOS,0(X)        ; -- xxxx       compile xxxx
+            MOV #')',TOS        ; -- ")"        prepare separator to search REG of "xxxx(REG)"
 
 ; search REG of "xxxx(REG),"    separator = ')'  ;
 ; search REG of ",xxxx(REG)"    separator = ')'  ;
@@ -264,21 +285,22 @@ StoARGsearchREG
 ; search REG of "REG,"          separator = ','  ; <== PARAM13
 ; search REG of ",REG"          separator = ' '  ; <== PARAM21
 
-SearchREG   PUSH    &TOIN                   ; -- separator  save >IN
-            ADD     #1,&TOIN                ;               skip "R"
-            ASMtoFORTH                      ;               search xx of Rxx
-            .word   WORDD,QNUMBER           ;
-            .word   QBRAN,notREG            ; -- xxxx       if number found
-            FORTHtoASM                      ; -- c-addr     if number not found
-            ADD     #2,RSP                  ;           remove >IN
-            CMP     #16,TOS                 ; -- 000R   register > 15 ?
-            JHS     BOUNDERROR              ;           yes : abort
-            RET                             ; -- 000R   Z=0 ==> found
-
-notREG      FORTHtoASM                      ; -- c-addr
-            MOV     @RSP+,&TOIN             ; -- c-addr          restore >IN
-            BIS     #Z,SR                   ;           Z=1 ==> not found
-            RET                             ; -- c_addr
+SearchREG   PUSHM #2,S          ;               PUSHM S,T
+            PUSH &TOIN          ; -- separator  save >IN
+            ADD #1,&TOIN        ;               skip "R"
+            ASMtoFORTH          ;               search xx of Rxx
+            .word WORDD,QNUMBER ;
+            .word QBRAN,NOTaREG ; -- xxxx       if Not a Number
+            FORTHtoASM          ; -- c-addr     number is found
+            ADD #2,RSP          ;               remove >IN
+            CMP #16,TOS         ; -- 000R       register > 15 ?
+            JHS BOUNDERROR      ;               yes : abort
+            JLO SearchEnd       ; -- 000R       Z=0 ==> found
+
+NOTaREG     FORTHtoASM          ; -- c-addr     Z=1
+            MOV @RSP+,&TOIN     ; -- c-addr          restore >IN
+            JMP SearchEnd       ; -- c_addr     Z=1 ==> not a register 
+
 
 ; ----------------------------------------------------------------------
 ; DTCforthMSP430FR5xxx ASSEMBLER : INTERPRET FIRST OPERAND
@@ -290,8 +312,8 @@ notREG      FORTHtoASM                      ; -- c-addr
 PARAM1      mDOCOL                          ; -- sep
             .word   FBLANK,SKIP             ; -- sep c-addr
             FORTHtoASM                      ; -- sep c-addr
-            MOV     #0,&ASMTYPE             ; -- sep c-addr        reset ASMTYPE
-            MOV     &DDP,&OPCODE            ; -- sep c-addr        HERE --> OPCODE (opcode is preset to its address !)
+            MOV     #0,S                    ; -- sep c-addr        reset ASMTYPE
+            MOV     &DDP,T                  ; -- sep c-addr        HERE --> OPCODEADR (opcode is preset to its address !)
             ADD     #2,&DDP                 ; -- sep c-addr        cell allot for opcode
             MOV     TOS,W                   ; -- sep c-addr        W=c-addr
             MOV     @PSP+,TOS               ; -- sep               W=c-addr
@@ -305,41 +327,41 @@ PARAM10     ADD     #1,&TOIN                ; -- sep        skip # prefix
 PARAM100    CMP #0,TOS                      ; -- xxxx       = 0 ?
             JNE PARAM101
 ; case of "#0,"
-            MOV #0300h,&ASMTYPE             ; -- 0          example : MOV #0,dst <=> MOV R3,dst
+            MOV #0300h,S                    ; -- 0          example : MOV #0,dst <=> MOV R3,dst
             JMP PARAMENDOF
 
 PARAM101    CMP #1,TOS                      ; -- xxxx       = 1 ?
             JNE PARAM102
 ; case of "#1,"
-            MOV #0310h,&ASMTYPE             ; -- 1          example : MOV #1,dst <=> MOV 0(R3),dst
+            MOV #0310h,S                    ; -- 1          example : MOV #1,dst <=> MOV 0(R3),dst
             JMP PARAMENDOF
 
 PARAM102    CMP #2,TOS                      ; -- xxxx       = 2 ?
             JNE PARAM104
 ; case of "#2,"
-            MOV #0320h,&ASMTYPE             ; -- 2          ASMTYPE = 0320h  example : MOV #2, <=> MOV @R3,
+            MOV #0320h,S                    ; -- 2          ASMTYPE = 0320h  example : MOV #2, <=> MOV @R3,
             JMP PARAMENDOF
 
 PARAM104    CMP #4,TOS                      ; -- xxxx       = 4 ?
             JNE PARAM108
 ; case of "#4,"
-            MOV #0220h,&ASMTYPE             ; -- 4          ASMTYPE = 0220h  example : MOV #4, <=> MOV @SR,
+            MOV #0220h,S                    ; -- 4          ASMTYPE = 0220h  example : MOV #4, <=> MOV @SR,
             JMP PARAMENDOF
 
 PARAM108    CMP #8,TOS                      ; -- xxxx       = 8 ?
             JNE PARAM10M1
 ; case of "#8,"
-            MOV #0230h,&ASMTYPE             ; -- 8          ASMTYPE = 0230h  example : MOV #8, <=> MOV @SR+,
+            MOV #0230h,S                    ; -- 8          ASMTYPE = 0230h  example : MOV #8, <=> MOV @SR+,
             JMP PARAMENDOF
 
 PARAM10M1   CMP #-1,TOS                     ; -- xxxx       = -1 ?
             JNE PARAM1000
 ; case of "#-1,"
-            MOV #0330h,&ASMTYPE             ; -- -1         ASMTYPE = 0330h  example : XOR #-1 <=> XOR @R3+,
+            MOV #0330h,S                    ; -- -1         ASMTYPE = 0330h  example : XOR #-1 <=> XOR @R3+,
             JMP PARAMENDOF
 
 ; case of all others "#xxxx,"               ; -- xxxx
-PARAM1000   MOV #0030h,&ASMTYPE             ; -- xxxx       add immediate code type : @PC+,
+PARAM1000   MOV #0030h,S                    ; -- xxxx       add immediate code type : @PC+,
 
 ; case of "&xxxx,"                          ; <== PARAM110
 ; case of ",&xxxx"                          ; <== PARAM20
@@ -360,7 +382,7 @@ PARAM11     CMP.B   #'&',0(W)               ; -- sep
             JNE     PARAM12
 
 ; case of "&xxxx,"                          ; -- sep        search for "&xxxx,"
-PARAM110    MOV     #0210h,&ASMTYPE         ; -- sep        set code type : xxxx(SR) with AS=0b01 ==> x210h (and SR=0 !)
+PARAM110    MOV     #0210h,S                ; -- sep        set code type : xxxx(SR) with AS=0b01 ==> x210h (and SR=0 !)
 
 ; case of "&xxxx,"
 ; case of ",&xxxx"                          ; <== PARAM20
@@ -373,20 +395,20 @@ PARAM12     CMP.B   #'@',0(W)               ; -- sep
             JNE     PARAM13
 
 ; case of "@REG,"|"@REG+,"
-PARAM120    MOV     #0020h,&ASMTYPE         ; -- sep        init ASMTYPE with indirect code type : AS=0b10
+PARAM120    MOV     #0020h,S                ; -- sep        init ASMTYPE with indirect code type : AS=0b10
             ADD     #1,&TOIN                ; -- sep        skip "@" prefix
             CALL    #SearchREG              ;               Z = not found
             JNZ     PARAM123                ; -- value      REG of "@REG," found
 
 ; case of "@REG+,"                          ; -- c-addr     REG of "@REG" not found, search REG of "@REG+"
-PARAM121    ADD     #0010h,&ASMTYPE         ;               change ASMTYPE from @REG to @REG+ type
+PARAM121    ADD     #0010h,S                ;               change ASMTYPE from @REG to @REG+ type
             MOV     #'+',TOS                ; -- "+"        as WORD separator to find REG of "@REG+,"
             CALL    #SearchREG              ; -- value|c-addr   X = flag
-
+            
 ; case of "@REG+,"                          ;
 ; case of "xxxx(REG),"                      ; <== PARAM130
-PARAM122    JZ      REGnotFound             ; -- c-addr
-            CMP     &SOURCE_LEN,&TOIN       ;               test OPCODE II parameter ending by REG+ or (REG) without comma,
+                                            ;               cases of double separator:   +, and ),
+PARAM122    CMP     &SOURCE_LEN,&TOIN       ;               test OPCODE II parameter ending by REG+ or (REG) without comma,
             JZ      PARAM123                ;               i.e. >IN = SOURCE_LEN : don't skip char CR !
             ADD     #1,&TOIN                ; -- 000R       skip "," ready for the second operand search
 
@@ -400,21 +422,22 @@ PARAM123    SWPB    TOS                     ; 000R -- 0R00  swap bytes because i
 ; case of "xxxx(REG),"                      ; -- 0R00                   (src REG typeI or dst REG typeII)
 ; case of "@REG,"                           ; -- 0R00                   (src REG typeI)
 ; case of "REG,"                            ; -- 0R00                   (src REG typeI or dst REG typeII)
+
+
+
 ; case of ",REG"                            ; -- 000R   <== PARAM21     (dst REG typeI)
 ; case of ",xxxx(REG)"                      ; -- 000R   <== PARAM210    (dst REG typeI)
-PARAM124    ADD     TOS,&ASMTYPE            ; -- 0R00|000R
+PARAM124    ADD     TOS,S                   ; -- 0R00|000R
             JMP     PARAMENDOF
 ; ------------------------------------------
 
 ; case of "REG,"|"xxxx(REG),"               ;               first, searg REG of "REG,"
 PARAM13     CALL    #SearchREG              ; -- sep        save >IN for second parsing (case of "xxxx(REG),")
-            JNZ     PARAM123                ; -- 000R       REG of "REG," found, ASMTYPE=0
+            JNZ     PARAM123                ; -- 000R       REG of "REG," found, S=ASMTYPE=0
 
 ; case of "xxxx(REG),"                      ; -- c-addr     "REG," not found
-PARAM130    ADD     #0010h,&ASMTYPE         ;               AS=0b01 for indexing address
-            MOV     #'(',TOS                ; -- "("        as WORD separator to find xxxx of "xxxx(REG),"
-            CALL    #SearchARG              ; -- xxxx       aborted if not found
-            CALL    #StoARGsearchREG        ;               compile xxxx and search REG of "(REG)"
+PARAM130    ADD     #0010h,S         ;               AS=0b01 for indexing address
+            CALL    #ComputeARGparenREG     ;               compile xxxx and search REG of "(REG)"
             JMP     PARAM122                ; 
 
 ; ----------------------------------------------------------------------
@@ -423,14 +446,14 @@ PARAM130    ADD     #0010h,&ASMTYPE         ;               AS=0b01 for indexing
 
 ; PARAM2     --                             ; parse input buffer until BL and compute this 2th operand
 PARAM2      mDOCOL                          ;
-            .word   FBLANK,SKIP             ;               skip space(s) between "arg1," and "arg2" if any
+            .word   FBLANK,SKIP             ;               skip space(s) between "arg1," and "arg2" if any; use not S,T.
             FORTHtoASM                      ; -- c-addr     search for '&' of "&xxxx
             CMP.B   #'&',0(TOS)             ;
             MOV     #20h,TOS                ; -- " "        as WORD separator to find xxxx of ",&xxxx"
             JNE     PARAM21                 ;               '&' not found
 
 ; case of ",&xxxx"                          ;
-PARAM20     ADD     #0082h,&ASMTYPE         ;               change ASMTYPE : AD=1, dst = R2
+PARAM20     ADD     #0082h,S                ;               change ASMTYPE : AD=1, dst = R2
             JMP     PARAM111                ; -- " "
 ; ------------------------------------------
 
@@ -439,13 +462,9 @@ PARAM21     CALL    #SearchREG              ;
             JNZ     PARAM124                ; -- 000R       REG of ",REG" found
 
 ; case of ",xxxx(REG)                       ; -- c-addr     REG not found
-PARAM210    ADD     #0080h,&ASMTYPE         ;               set AD=1
-            MOV     #'(',TOS                ; -- "("        as WORD separator to find xxxx of ",xxxx(REG)"
-            CALL    #SearchARG              ; -- xxxx       aborted if not found
-            CALL    #StoARGsearchREG        ;               compile argument xxxx and search REG of "(REG)"
-            JNZ     PARAM124                ; -- 000R       REG of "(REG) found
-REGnotFound MOV     #NotFound,IP            ; -- c-addr     abort
-            mNEXT
+PARAM210    ADD     #0080h,S                ;               set AD=1
+            CALL    #ComputeARGparenREG     ;               compile argument xxxx and search REG of "(REG)"
+            JMP     PARAM124                ; -- 000R       REG of "(REG) found
 
 
 ; ----------------------------------------------------------------------
@@ -484,8 +503,8 @@ TYPE1DOES                                   ; -- PFADOES
             .word   PARAM2                  ; -- PFADOES            char separator (BL) included in PARAM2
             FORTHtoASM                      ; -- PFADOES
 MAKEOPCODE  MOV     @TOS,TOS                ; -- opcode             part of instruction
-            BIS     &ASMTYPE,TOS            ; -- opcode             opcode is complete
-            MOV     &OPCODE,X               ; -- opcode             X= addr to compile opcode
+            BIS     S,TOS                   ; -- opcode             opcode is complete
+            MOV     T,X                     ; -- opcode             X= OPCODEADR to compile opcode
             JMP     StoreTOS                ;                       then EXIT
 
             asmword "MOV"
@@ -606,11 +625,11 @@ TYPE2DOES                                   ; -- PFADOES
             .word   FBLANK                  ;               char separator for PARAM1
             .word   PARAM1
             FORTHtoASM                      ; -- PFADOES
-            MOV     &ASMTYPE,W              ;
-            AND     #0070h,&ASMTYPE         ;             keep B/W & AS infos in ASMTYPE
+            MOV     S,W                     ;
+            AND     #0070h,S                ;             keep B/W & AS infos in ASMTYPE
             SWPB    W                       ;             (REG org --> REG dst)
             AND     #000Fh,W                ;             keep REG
-BIS_ASMTYPE BIS     W,&ASMTYPE              ; -- PFADOES  add it in ASMTYPE
+BIS_ASMTYPE BIS     W,S                     ; -- PFADOES  add it in ASMTYPE
             JMP     MAKEOPCODE              ; -- then end
 
             asmword "RRC"          ; Rotate Right through Carry ( word)
@@ -649,40 +668,6 @@ BIS_ASMTYPE BIS     W,&ASMTYPE              ; -- PFADOES  add it in ASMTYPE
             mDODOES
             .word   TYPE2DOES,1280h
 
-; ----------------------------------------------------------------------
-; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES TYPE III : PUSHM POPM
-; ----------------------------------------------------------------------
-; syntax :  PUSHM R13,R9    ; R-- R13 R12 R11 R10 R9    (first >= last)
-;           POPM  R9,R13    ; R--                       (last >= first)
-; this syntax is more explicit than TI's one and can reuse typeI template
-
-; PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8, R7, R6, R5, R4 (TI's reg)
-; or          : PSP,TOS, IP,  S,  T,  W,  X,  Y, R7, R6, R5, R4 (FastForth reg)
-; example : PUSHM IP,Y or PUSHM R13,R8
-
-; POPM  order :  R4, R5, R6, R7, R8, R9,R10,R11,R12,R13,R14,R15 (TI's reg)
-; or          :  R4, R5, R6, R7,  Y,  X,  W,  T,  S, IP,TOS,PSP (FastForth reg)
-; example : POPM Y,IP or POPM R8,R13
-
-; TYPE3DOES     -- PFADOES       parse input stream to search :"   REG, REG " as operands of PUSHM|POPM then compile instruction
-TYPE3DOES                                   ; -- PFADOES
-            .word   lit,','                 ; -- PFADOES ","        char separator for PARAM1
-            .word   PARAM1                  ; -- PFADOES            ASMTYPE contains : 0x0S00    S=REGsrc
-            .word   PARAM2                  ; -- PFADOES            ASMTYPE contains : 0x0S0D    D=REGdst
-            FORTHtoASM                      ; -- PFADOES
-            MOV.B   &ASMTYPE,X              ;                       X=REGdst
-            MOV.B   &ASMTYPE+1,W            ;                       W=REGsrc
-            MOV     W,&ASMTYPE              ;                       ASMTYPE = 0x000S
-            CMP     #1500h,0(TOS)           ; -- PFADOES            PUSHM ?
-            JNZ     POPMCASEOF
-PUSHMCASEOF SUB     X,W                     ; -- PFADOES            PUSHM : REGsrc - REGdst = n-1
-            JMP     TYPE3QERR
-POPMCASEOF  SUB     W,X                     ; -- PFADOES            POPM  : REGdst - REGsrc = n-1
-            MOV     X,W
-TYPE3QERR   CMP     #16,W
-            JHS     BOUNDERRORW             ; -- PFADOES            (u>=)
-            .word   0E5Ah                   ;                       RLAM #4,R10 --> RLAM #4,W
-            JMP     BIS_ASMTYPE             ; --            then end
 
 BOUNDERRWM1 ADD     #1,W                    ; <== RRAM|RRUM|RRCM|RLAM error
 BOUNDERRORW MOV     W,TOS                   ; <== PUSHM|POPM|ASM_branch error
@@ -692,56 +677,88 @@ BOUNDERROR                                  ; <== REG number error
             .byte   13,"out of bounds"
             .word   QABORTYES
 
-            asmword "PUSHM"
-ASM_PUSHM   mDODOES
-            .word   TYPE3DOES,01500h
+; --------------------------------------------------------------------------------
+; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES TYPE III : PUSHM|POPM|RLAM|RRAM|RRUM|RRCM
+; --------------------------------------------------------------------------------
+; PUSHM, syntax:    PUSHM #n,REG  with 0 < n < 17 
+; POPM syntax:       POPM #n,REG  with 0 < n < 17 
 
-            asmword "POPM"
-ASM_POPM    mDODOES
-            .word   TYPE3DOES,01700h
 
-; ----------------------------------------------------------------------
-; DTCforthMSP430FR5xxx ASSEMBLER, OPCODES TYPE IV : RLAM|RRAM|RRUM|RRCM
-; ----------------------------------------------------------------------
+; PUSHM order : PSP,TOS, IP,  S,  T,  W,  X,  Y, rEXIT,rDOVAR,rDOCON, rDODOES, R3, SR,RSP, PC
+; PUSHM order : R15,R14,R13,R12,R11,R10, R9, R8,  R7  ,  R6  ,  R5  ,   R4   , R3, R2, R1, R0
+
+; example : PUSHM #6,IP pushes IP,S,T,W,X,Y registers to return stack
+;
+; POPM  order :  PC,RSP, SR, R3, rDODOES,rDOCON,rDOVAR,rEXIT,  Y,  X,  W,  T,  S, IP,TOS,PSP
+; POPM  order :  R0, R1, R2, R3,   R4   ,  R5  ,  R6  ,  R7 , R8, R9,R10,R11,R12,R13,R14,R15
+
+; example : POPM #6,IP   pulls Y,X,W,T,S,IP registers from return stack
+
+; RxxM syntax: RxxM #n,REG  with 0 < n < 5 
 
-; TYPE4DOES      -- PFADOES        parse input stream to search : "   #N, REG " as operands of RLAM|RRAM|RRUM|RRCM
-TYPE4DOES                                   ; -- PFADOES
+; TYPE3DOES      -- PFADOES        parse input stream to search : "   #N, REG " as operands of RLAM|RRAM|RRUM|RRCM
+TYPE3DOES                                   ; -- PFADOES
             .word   FBLANK,SKIP             ;                       skip spaces if any
             FORTHtoASM                      ; -- PFADOES c-addr
-            MOV     #0,&ASMTYPE             ;                       init ASMTYPE=0
-            MOV     &DDP,&OPCODE            ;                       init OPCODE=DP
+            MOV     #0,S                    ;                       init ASMTYPE=0
+            MOV     &DDP,T                  ;                       init OPCODEADR=DP
             ADD     #2,&DDP                 ;                       make room for opcode
             ADD     #1,&TOIN                ;                       skip "#"
             MOV     #',',TOS                ; -- PFADOES ","
+            PUSHM   #2,S                    ;               PUSHM S,T
             ASMtoFORTH
             .word   WORDD,QNUMBER
-            .word   QBRAN,NotFound
-            .word   PARAM2                  ; -- PFADOES 0x000N     ASMTYPE = 0x000R
+            .word   QBRAN,NotFound          ;                       ABORT
+            FORTHtoASM
+            POPM  #2,S                    ;               POPM T,S
+            ASMtoFORTH
+            .word   PARAM2                  ; -- PFADOES 0x000N     S=ASMTYPE = 0x000R
             FORTHtoASM
-            MOV     TOS,W                   ; -- PFADOES 0x000N     W = 0x000N
+            MOV     TOS,W                   ; -- PFADOES n          W = n
             MOV     @PSP+,TOS               ; -- PFADOES
-            SUB     #1,W                    ;                       W = N floored to 0
-            CMP     #4,W                    ;
+            SUB     #1,W                    ;                       W = n floored to 0
+            JN      BOUNDERRWM1
+            MOV     @TOS,X                  ;                       X=OPCODE
+            RLAM    #4,X                    ;                       OPCODE bit 1000h --> C
+            JNC     RxxMINSTRU              ;                       
+PxxxINSTRU  MOV     S,Y                     ;                       S=REG, Y=REG to test
+            RLAM    #3,X                    ;                       OPCODE bit 0200h --> C                  
+            JNC     PUSHMINSTRU             ;                       W=n-1 Y=REG
+POPMINSTRU  SUB     W,S                     ;                       to make POPM opcode, keep first REG to POP; TI is complicated....
+PUSHMINSTRU SUB     W,Y                     ;                       Y=REG-(n-1)
+            CMP     #16,Y
             JHS     BOUNDERRWM1             ;                       JC=JHS    (U>=)
-            SWPB    W                       ; -- PFADOES            W = N << 8
-            .word   065Ah                   ; RLAM #2,R10           W = N << 10
-            JMP     BIS_ASMTYPE             ; --
+            RLAM.W  #4,W                    ;                       W = n << 4      
+            JMP     BIS_ASMTYPE             ; PFADOES --            
+RxxMINSTRU  CMP     #4,W                    ;
+            JHS     BOUNDERRWM1             ;                       JC=JHS    (U>=)
+            SWPB    W                       ; -- PFADOES            W = n << 8
+            RLAM.W  #2,W                    ; RLAM #2,R10           W = N << 10
+            JMP     BIS_ASMTYPE             ; PFADOES --
 
             asmword "RRCM"
             mDODOES
-            .word   TYPE4DOES,0050h
+            .word   TYPE3DOES,0050h
 
             asmword "RRAM"
             mDODOES
-            .word   TYPE4DOES,0150h
+            .word   TYPE3DOES,0150h
 
             asmword "RLAM"
             mDODOES
-            .word   TYPE4DOES,0250h
+            .word   TYPE3DOES,0250h
 
             asmword "RRUM"
             mDODOES
-            .word   TYPE4DOES,0350h
+            .word   TYPE3DOES,0350h
+
+            asmword "PUSHM"
+            mDODOES
+            .word   TYPE3DOES,1500h
+
+            asmword "POPM"
+            mDODOES
+            .word   TYPE3DOES,1700h
 
 ; ----------------------------------------------------------------------
 ; DTCforthMSP430FR5xxx ASSEMBLER, CONDITIONAL BRANCHS
@@ -873,71 +890,73 @@ ASM_REPEAT  mDOCOL                      ; -- @WHILE @BEGIN
 BACKWARDDOES        ;
     FORTHtoASM
     MOV @RSP+,IP
-    MOV TOS,Y       ; Y = CLRBWx
+    MOV @TOS,TOS
+    MOV TOS,Y       ; Y = ASMBWx
     MOV @PSP+,TOS   ; 
-    MOV @Y,W        ;               W = [CLRBWx]
+    MOV @Y,W        ;               W = [ASMBWx]
     CMP #0,W        ;               W = 0 ?
-    JNZ BACKWUSE
+    MOV #0,0(Y)     ;               preset [ASMBWx] = 0 for next use
+BACKWUSE            ; -- OPCODE
+    JNZ ASM_UNTIL1
 BACKWSET            ; --
-    MOV &DDP,0(Y)   ;               [CLRBWx] = DDP
+    MOV &DDP,0(Y)   ;               [ASMBWx] = DDP
     mNEXT
-BACKWUSE            ; -- OPCODE
-    MOV #0,0(Y)     ;               [CLRBWx] = 0 for next use
-    JMP ASM_UNTIL1  ;               resolve backward branch with W
+;    JMP ASM_UNTIL1  ;               resolve backward branch with W
 
 ; backward label 1
             asmword "BW1"
             mdodoes
             .word BACKWARDDOES
-CLRBW1      .word 0
+            .word ASMBW1
 
 ; backward label 2
             asmword "BW2"
             mdodoes
             .word BACKWARDDOES
-CLRBW2      .word 0
+            .word ASMBW2
 
 ; backward label 3
             asmword "BW3"
             mdodoes
             .word BACKWARDDOES
-CLRBW3      .word 0
+            .word ASMBW3
 
 FORWARDDOES
     FORTHtoASM
     MOV @RSP+,IP
     MOV &DDP,W      ;
-    MOV @TOS,Y      ;               Y=[CLRFWx]
-    CMP #0,Y        ;               Y = 0 ? (FWx is free?)
-    JNZ FORWUSE     ;               no
+    MOV @TOS,TOS
+    MOV @TOS,Y      ;               Y=[ASMFWx]
+    MOV #0,0(TOS)   ;               preset [ASMFWx] for next use
+    CMP #0,Y        ;               ASMFWx = 0 ? (FWx is free?)
+FORWUSE             ; PFA -- @OPCODE
+    JNZ ASM_THEN1     ;               no
 FORWSET             ; OPCODE PFA -- 
     MOV @PSP+,0(W)  ; -- PFA        compile incomplete opcode
     ADD #2,&DDP     ;               increment DDP
-    MOV W,0(TOS)    ;               store @OPCODE into CLRFWx
+    MOV W,0(TOS)    ;               store @OPCODE into ASMFWx
     MOV @PSP+,TOS   ;   --
     mNEXT
-FORWUSE             ; PFA -- @OPCODE
-    MOV #0,0(TOS)   ;               reset PFA for next use
-    JMP ASM_THEN1   ;               resolve forward branch with Y
+;    JMP ASM_THEN1   ;               resolve forward branch with Y
 
 
 ; forward label 1
             asmword "FW1"
             mdodoes
             .word FORWARDDOES
-CLRFW1      .word 0
+            .word ASMFW1
 
 ; forward label 2
             asmword "FW2"
             mdodoes
             .word FORWARDDOES
-CLRFW2      .word 0
+            .word ASMFW2
 
 ; forward label 3
             asmword "FW3"
             mdodoes
             .word FORWARDDOES
-CLRFW3      .word 0
+            .word ASMFW3
 
 
 ; invert FORTH conditionnal branch      FORTH_JMP_OPCODE -- LABEL_JMP_OPCODE
index 4ac54a1..39f6ca7 100644 (file)
@@ -21,13 +21,13 @@ COMPARE
         MOV @PSP+,Y     ;2 addr2 = Y
         MOV @PSP+,T     ;2 u1 = T     
         MOV @PSP+,X     ;2 addr1 = X
-COMPAR1 MOV T,TOS       ;1
-        ADD S,TOS       ;1
-        JZ  COMPEQUAL   ;2 end of all successfull comparisons
+COMPAR1 MOV T,TOS       ;1 TOS=u1
+        ADD S,TOS       ;1 TOS=u1+u2
+        JZ  COMPEQUAL   ;2 u1=u2=0: end of all successfull comparisons
         SUB #1,T        ;1
         JN COMPLESS     ;2 u1<u2
         SUB #1,S        ;1
-        JN COMPGREATER  ;2 u2<u1
+        JN COMPGREATER  ;2 u1>u2
         ADD #1,X        ;1
         CMP.B @Y+,-1(X) ;4 char1-char2
         JZ COMPAR1      ;2 char1=char2  17~ loop
@@ -129,18 +129,6 @@ BRACKETIF
 ;        XOR #-1,TOS
 ;        JMP BRACKETIF
 
-;[UNDEFINED]
-;https://forth-standard.org/standard/tools/BracketUNDEFINED
-;Compilation:
-;Perform the execution semantics given below.
-;Execution: ( "<spaces>name ..." -- flag )
-;Skip leading space delimiters. Parse name delimited by a space. 
-;Return a false flag if name is the name of a word that can be found,
-;otherwise return a true flag.
-        FORTHWORDIMM  "[UNDEFINED]"
-        mDOCOL
-        .word   FBLANK,WORDD,FIND,NIP,ZEROEQUAL,EXIT
-
 ;[DEFINED]
 ;https://forth-standard.org/standard/tools/BracketDEFINED
 ;Compilation:
@@ -152,9 +140,22 @@ BRACKETIF
 ;otherwise return a false flag. [DEFINED] is an immediate word.
 
         FORTHWORDIMM  "[DEFINED]"
+BRACKETDEFINED
         mDOCOL
         .word   FBLANK,WORDD,FIND,NIP,EXIT
 
+;[UNDEFINED]
+;https://forth-standard.org/standard/tools/BracketUNDEFINED
+;Compilation:
+;Perform the execution semantics given below.
+;Execution: ( "<spaces>name ..." -- flag )
+;Skip leading space delimiters. Parse name delimited by a space. 
+;Return a false flag if name is the name of a word that can be found,
+;otherwise return a true flag.
+        FORTHWORDIMM  "[UNDEFINED]"
+        mDOCOL
+        .word   BRACKETDEFINED,ZEROEQUAL,EXIT
+
 ;; CORE EXT  MARKER
 ;;https://forth-standard.org/standard/core/MARKER
 ;;( "<spaces>name" -- )
index 6e1cd64..f44d654 100644 (file)
@@ -7,12 +7,14 @@
 ; (ACCEPT) part I: prepare TERMINAL_INT ;
 ; --------------------------------------;
     .IFDEF TOTAL
-            .word 1537h                 ;6              push R7,R6,R5,R4
+;            .word 1537h                 ;6              push R7,R6,R5,R4
+            PUSHM  #4,R7
     .ENDIF                              ;
             MOV     #ENDACCEPT,S        ;2              S = ACCEPT XOFF return
             MOV     #AKEYREAD1,T        ;2              T = default XON return
-            .word   152Dh               ;5              PUSHM IP,S,T, as IP ret, XOFF ret, XON ret
-            MOV     TOS,W               ;1 -- addr len
+;            .word   152Dh               ;5              PUSHM IP,S,T, as IP ret, XOFF ret, XON ret
+             PUSHM  #3,IP
+           MOV     TOS,W               ;1 -- addr len
             MOV     @PSP,TOS            ;2 -- org ptr                                             )
             ADD     TOS,W               ;1 -- org ptr   W=Bound                                   )
             MOV     #0Dh,T              ;2              T = 'CR' to speed up char loop in part II  > prepare stack and registers
@@ -24,7 +26,8 @@
             JNZ     RXON                ;2                   no : RXON return = AKEYREAD1, to process first char of new line.
 ACCEPTNEXT  ADD     #2,RSP              ;1                   yes: remove AKEYREAD1 as XON return,
             MOV     #SLEEP,X            ;2                        and set XON return = SLEEP
-            .word   153Ch               ;6                        PUSHM S,T,W,X before SLEEP (and so WAKE on any interrupts)
+;            .word   153Ch               ;6                        PUSHM S,T,W,X before SLEEP (and so WAKE on any interrupts)
+            PUSHM  #4,S
 ; --------------------------------------;
 RXON                                    ;
 ; --------------------------------------;
@@ -60,10 +63,6 @@ RXOFF_LOOP  BIT     #UCTXIFG,&TERMIFG   ;3  wait the sending end of XOFF, useles
     ASMWORD "SLEEP"                     ; may be redirected
 SLEEP                                   ;
     MOV #PARENSLEEP,PC                  ;3
-; --------------------------------------;
-
-; --------------------------------------;
-    ASMWORD "(SLEEP)"                   ;
 PARENSLEEP                              ;
     BIS &LPM_MODE,SR                    ;3  enter in LPMx sleep mode with GIE=1
 ; --------------------------------------;   default FAST FORTH mode (for its input terminal use) : LPM0.
@@ -101,8 +100,7 @@ TERMINAL_INT                            ; <--- TEMR RX interrupt vector, delayed
 ; **************************************;      if wake up time increases, max bauds rate decreases...
 ; (ACCEPT) part II under interrupt      ; Org Ptr -- len'
 ; --------------------------------------;
-            ADD     #4,RSP              ;1  remove SR and PC from stack, SR flags are lost (unused by FORTH interpreter)
-            .word   172Ah               ;5  POPM W=buffer_bound,T=0Dh,S=20h
+             POPM  #5,S                 ;8  POPM  Y=SR,X=PC,W=buffer_bound, T=0Dh,S=20h
 ; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv;
 ; starts the 2th stopwatch              ;
 ; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^;
@@ -152,7 +150,7 @@ ACCEPTEND   SUB @PSP+,TOS               ; Org Ptr -- len'
             MOV @RSP+,IP                ; 2 and continue with INTERPRET with GIE=0.
                                         ; So FORTH machine is protected against any interrupt...
     .IFDEF TOTAL
-            .word 1734h                 ;6              pop R4,R5,R6,R7
+             POPM  #4,R7                 ;6              pop R4,R5,R6,R7
     .ENDIF
             mNEXT                       ; ...until next falling down to LPMx mode of (ACCEPT) part1,
 ; **************************************;    i.e. when the FORTH interpreter has no more to do.
@@ -162,10 +160,11 @@ ACCEPTEND   SUB @PSP+,TOS               ; Org Ptr -- len'
 ; ------------------------------------------------------------------------------
 
 
-;Z (EMIT)   c --    output character (byte) to the terminal
-; hardware or software control on TX flow seems not necessary with UARTtoUSB bridges because
-; they stop TX when their RX buffer is full. So no problem when the terminal input is echoed to output.
-            FORTHWORD "(EMIT)"
+;https://forth-standard.org/standard/core/EMIT
+;C EMIT     c --    output character to the output device ; deferred word
+            FORTHWORD "EMIT"
+EMIT        MOV @PC+,PC                 ;3  15~
+            .word   PARENEMIT
 PARENEMIT   MOV     TOS,Y               ; 1
             MOV     @PSP+,TOS           ; 2
 YEMIT1      BIT     #UCTXIFG,&TERMIFG   ; 3 wait the sending end of previous char, useless at high baudrates
index 614c32d..f957896 100644 (file)
 ; ===========================================================
 
     .IFDEF RAM_1K               ; case of MSP430FR57xx : SD datas are in FRAM
-        MOV #SD_ORG_DATA,X      ; so are not initialised by COLD/RESET
+        MOV #SD_LEN_DATA,X      ; so are not initialised by COLD/RESET
 InitSDdata                      ;
-        MOV #0,0(X)             ;
-        ADD #2,X                ;
-        CMP #SD_END_DATA,X      ;
-        JNE InitSDdata          ;
+        SUB #2,X
+        MOV #0,SD_ORG_DATA(X)   ;
+        JNZ InitSDdata          ;
     .ENDIF
 
 ; ===========================================================
index 0eaa367..2727210 100644 (file)
@@ -87,7 +87,8 @@ CCFS_AllOthers                      ;
 ; ----------------------------------;
     .ELSEIF                         ; case of no hardware multiplier
 ; ----------------------------------; Cluster24<<SecPerClus{1,2,4,8,16,32,64} --> ClusFrstSect
-    .word 0152Ah                    ;6 PUSHM W,X,Y
+;    .word 0152Ah                    ;6 PUSHM W,X,Y
+    PUSHM  #3,W
     MOV.B &SecPerClus,W             ;3 SecPerClus(5-1) = multiplicator
     MOV &ClusterL,X                 ;3 Cluster(16-1) --> MULTIPLICANDlo
     MOV.B &ClusterH,Y               ;3 Cluster(21-17) -->  MULTIPLICANDhi
@@ -105,7 +106,8 @@ CCFS_NEXT                           ;  C = 1, it's done
     ADDC #0,Y                       ;1
     MOV X,&SectorL                  ;3 low result
     MOV Y,&SectorH                  ;3 high result
-    .word 01728h                    ;6 POPM Y,X,W
+;    .word 01728h                    ;6 POPM Y,X,W
+    POPM  #3,W
 ; ----------------------------------;34~ + 5~ by loop
     .ENDIF ; MPY
 ; ----------------------------------;
@@ -325,7 +327,7 @@ CheckCaseOfCloseLoadedFile          ;
 RestorePreviousBuffer               ; W=-1: this LOADed file to close had not a parent file
 ; ----------------------------------;
     MOV     #TIB_ORG,&FCIB+2        ;     restore TIB as Current Input Buffer for next line (next QUIT)
-    MOV     #PARENACCEPT,&ACCEPT+2  ;     restore (ACCEPT) for next line (next QUIT)
+    MOV     #BODYACCEPT,&ACCEPT+2   ;     restore (ACCEPT) for next line (next QUIT)
     JMP     RestoreBufferContext    ;
 ; ----------------------------------;
 CheckPreviousLoadedFile             ;
@@ -546,7 +548,8 @@ OPN_LoadDIRsector                   ; <=== Dir Sector loopback
 OPN_SearchDIRentry                  ; <=== DIR Entry loopback
 ; ----------------------------------;
     MOV     W,Y                     ; 1
-    .word   0E58h                   ; 5 RLAM #4,Y --> * 16
+;    .word   0E58h                   ; 5 RLAM #4,Y --> * 16
+    RLAM.W  #4,Y
     ADD     Y,Y                     ; 1           --> * 2
     MOV     Y,&EntryOfst            ; EntryOfst points to first free entry
     CMP.B   #0,SD_BUF(Y)            ; free entry ? (end of entries in DIR)
index 9a31b3d..52644f3 100644 (file)
@@ -16,7 +16,7 @@
 
 regmspinc       equ     1
 
-                if      (MOMCPUNAME<>"MSP430")
+                if      (MOMCPUNAME<>"MSP430")&&(MOMCPUNAME<>"MSP430X")
                  fatal  "Falscher Prozessortyp eingestellt: nur MSP430 erlaubt!"
                endif
 
@@ -164,10 +164,10 @@ Z             equ 0002h
 N             equ 0004h
 V             equ 0100h
 GIE           equ 0008h
-CPUOFF        equ 0010h
-OSCOFF        equ 0020h
-SCG0          equ 0040h
-SCG1          equ 0080h
+CPUOFF        equ 0010h ; CPU Off.                  1=turn_off_CPU
+OSCOFF        equ 0020h ; Oscillator Off.           1=turn_off_LFXT1CLK
+SCG0          equ 0040h ; System Clock Generator 0. 1=turn_off_DCO
+SCG1          equ 0080h ; System Clock Generator 1. 1=turn_off_SMCLK
 UF9           equ 0200h ; = SR(9) User Flag 1 used by ?NUMBER --> INTERPRET --> LITERAL to process double numbers, else free for use.  
 UF10          equ 0400h ; = SR(10) User Flag 2  
 UF11          equ 0800h ; = SR(11) User Flag 3