OSDN Git Service

la der de der
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / UARTI2CS.4TH
index 4abc21f..70051ee 100644 (file)
@@ -1,7 +1,5 @@
 
-; ---------------------------------------------------------
 ; UARTI2CS.4th for MSP_EXP430FR5994
-; ---------------------------------------------------------
 
     CODE ABORT_UARTI2CS
     SUB #4,R15
     0<> IF MOV #0,R14 THEN
     MOV R14,0(R15)
     MOV &$180A,R14
-    SUB #309,R14
+    SUB #401,R14
     COLON
     $0D EMIT
-    ABORT" FastForth V3.9 please!"
+    ABORT" FastForth V4.1 please!"
     ABORT" <-- Ouch! unexpected I2C_FastForth target!"
     RST_RET
     ;
     ABORT_UARTI2CS
 
     MARKER {UARTI2CS}
-    10 ALLOT
+    16 ALLOT
 
-    [UNDEFINED] TSTBIT  
-    [IF]
+    [UNDEFINED] = [IF]
+    CODE =
+    SUB @R15+,R14
+    SUB #1,R14
+    SUBC R14,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] TSTBIT [IF]
     CODE TSTBIT
     MOV @R15+,R9
     AND @R9,R14
     MOV @R1+,R0
     ENDCODE
 
-    CODE REMOVE_U2I
+    HDNCODE REMOVE_U2I
 BW1
+    [DEFINED] LEDS [IF]
     BIC.B #1,&$202
     BIC.B #1,&$204
     BIC.B #2,&$202
     BIC.B #2,&$204
+    [THEN]
     CALL #I2CM_STOP
-    MOV #6,R10
-    BIC.B R10,&$265
-    BIS.B R10,&$263
-    BIS.B R10,&$267
+    BIS.B #6,&$263
+    BIS.B #6,&$267
     MOV #0,&$3C0
-    MOV #0,&$3C6
-    BIC.B #$80,&$20C
-    BIC.B #$80,&$204
-    BIC.B #$40,&$21A
-    CMP #$4082,&{UARTI2CS}-2
+    BIC.B #$20,&$20C
+    BIC.B #$20,&$204
+    BIC.B #$10,&$21A
+    CMP #<#+$4C,&{UARTI2CS}-2
     0<> IF
         MOV #{UARTI2CS},R10
-        MOV #$4082,-2(R10)
-        MOV @R10+,&$183E
-        MOV @R10+,&$1840
+        MOV #<#+$4C,-2(R10)
+        MOV @R10+,&$183C
+        MOV @R10+,&$1842
+        MOV @R10+,&$1844
         MOV @R10+,&$FFF0
         MOV @R10+,&$FFDE
     THEN
-    MOV #1,R14
-    MOV #UART_WARM+4,R0
+    MOV @R1+,R0
+    ENDCODE
+
+    HDNCODE STOP_U2I
+    CALL #I2CM_STOP
+    MOV &{UARTI2CS},R0
+    ENDCODE
+
+    HDNCODE BACKGRND_U2I
+    BIT #8,&$5CA
+    0<> ?GOTO FW1
+    BIT.B #$40,&$240
+    0= IF
+FW1     MOV #1,R14
+        MOV #SYS+$0E,0(R1)
+        GOTO BW1
+    THEN
+    BIC.B #$10,&$21C
+    MOV #$0D,R12
+    MOV #0,R11
+    MOV.B &{UARTI2CS}+15,R8
+    MOV &{UARTI2CS}+4,R0
+    ENDCODE
+
+    HDNCODE HARD_U2I
+BW3 MOV &{UARTI2CS}+12,&$3C0
+    MOV #4096,&$3D2
+    MOV #$60,&$3C6
+    MOV #4096,&$3D6
+    BIS.B #$20,&$204
+    BIS.B #$20,&$20C
+    BIS.B #$10,&$21A
+    BIC.B #6,&$267
+    BIC.B #6,&$263
+    BIC.B #6,&I2CSM_IES
+    [DEFINED] LEDS [IF]
+    BIS.B #1,&$204
+    BIS.B #2,&$204
+    [THEN]
+    CALL &{UARTI2CS}+2
+    CMP #$0E,R14
+    0<> IF
+        CMP #$0A,R14
+        U>= ?GOTO BW1
+    THEN
+    MOV #ALLOT+8,0(R1)
+    MOV @R1+,R0
     ENDCODE
 
     HDNCODE I2CM_START
     BIS.B   #4,&$265
-    BIS.B   &{UARTI2CS}+8,R9
-    MOV R0,R0
+    BIS     &{UARTI2CS}+10,R9
     BIS.B   #2,&$265
     MOV.B #8,R10
     BEGIN
         ADD.B R9,R9
-        U>= IF
-            BIC.B #4,&$265
-        ELSE
+        U< IF
             BIS.B #4,&$265
-        THEN
-        BIC.B #2,&$265
-        BIT.B #4,&$261
-        BIS.B #2,&$265
-        0= IF
-            BIT.B #4,&$265
+            BIC.B #2,&$265
+            MOV R0,R0
+        ELSE
+            BIC.B #4,&$265
+            BIC.B #2,&$265
+            BIT.B #4,&$261
             0= IF
-                BIS.B #6,&$265
-                BIC.B #6,&I2CSM_IES
                 BEGIN
-                    BIT.B #6,&I2CSM_IFG
-                    BIC.B #6,&I2CSM_IFG
-                    0<> IF
-                        MOV #9,R10
-                    ELSE
-                        $3C00 ,
-                        $3C00 ,
-                    THEN
-                SUB #1,R10
+                    BIT #2,&$5DC
+                0<> UNTIL
+                MOV.B #'c',&$5CE
+                BEGIN
+                    BIT.B #2,&$261
+                0<> UNTIL
+                BEGIN
+                   BIC.B #6,&I2CSM_IFG
+                   MOV R0,R0
+                   MOV.B &{UARTI2CS}+14,R10
+                   BEGIN
+                      MOV #0,R3
+                      SUB #1,R10
+                   0= UNTIL
+                   BIT.B #6,&I2CSM_IFG
                 0= UNTIL
                 ADD #2,R1
-                MOV @R1+,R0
+                MOV @R1,R0
             THEN
         THEN
+        BIS.B #2,&$265
         SUB #1,R10
     0= UNTIL
     BIC.B #4,&$265
@@ -122,66 +175,84 @@ BW1
     MOV @R1+,R0
     ENDCODE
 
-
     HDNCODE U2I_TERM_INT
     ADD #4,R1
     BEGIN
-        MOV.B &$5CC,R8
-        MOV.B R8,$1CE4(R11)
+        MOV.B &$5CC,R10
         ADD #1,R11
-        CMP.B R8,R12
+        CMP.B R12,R10
     0<> WHILE
-        CMP #4,R10
+        CMP ##84+1,R11
+        U< IF
+            MOV.B R10,$1CE4-3(R11)
+        THEN
+        CMP.B #4,R8
         0<> IF
             BEGIN
                 BIT #2,&$5DC
             0<> UNTIL
-            MOV.B R8,&$5CE
+            MOV.B R10,&$5CE
         THEN
         BEGIN
             BIT #1,&$5DC
         0<> UNTIL
     REPEAT
-    CALL #ACCEPT+$2A
+    CALL #ACCEPT+$26
+    MOV.B R10,$1CE4-3(R11)
     BEGIN
         BIT #1,&$5DC
     0<> UNTIL
 BW2
     MOV.B &$5CC,R12
-    MOV.B R12,$1CE4(R11)
+    MOV.B R12,$1CE4-2(R11)
     PUSH R0
     MOV #0,R9
     CALL #I2CM_START
     0<> ?GOTO FW2
+    [DEFINED] LEDS [IF]
     BIS.B #1,&$202
-    MOV #$1CE4,R8
+    [THEN]
+    MOV #$1CE4-2,R11
     BEGIN
-        MOV.B @R8,R9
-        MOV.B #8,R10
+        MOV.B @R11,R9
+        MOV.B #7,R10
         BEGIN
             ADD.B R9,R9
             U>= IF
                 BIC.B #4,&$265
             ELSE
                 BIS.B #4,&$265
+            $3C00 ,
             THEN
             BIC.B #2,&$265
             MOV R0,R0
             BIS.B #2,&$265
             SUB #1,R10
         0= UNTIL
-        BIC.B #4,&$265
+        ADD.B R9,R9
+        U>= IF
+            BIC.B #4,&$265
+        ELSE
+            BIS.B #4,&$265
+            $3C00 ,
+        THEN
         BIC.B #2,&$265
         BEGIN
             BIT.B #2,&$261
         0<> UNTIL
+        BIS.B #2,&$265
+        BIC.B #4,&$265
+        BIC.B #2,&$265
+        MOV R0,R0
         BIT.B #4,&$261
         BIS.B #2,&$265
     0= WHILE
-        CMP.B @R8+,R12
+        CMP.B @R11+,R12
     0= UNTIL
     THEN
+    [DEFINED] LEDS [IF]
     BIC.B #1,&$202
+    [THEN]
     GOTO FW1
     ENDCODE
 
@@ -191,34 +262,40 @@ FW1
 FW2
     PUSH R0
     BEGIN
-        BIT #8,&$5CA
-        0<> ?GOTO BW1
-        BIT.B #$20,&$240
-        0= ?GOTO BW1
         BIC.B #2,&$265
         MOV #1,R9
-            CALL #I2CM_START
+        CALL #I2CM_START
         0<> IF
             CALL #I2CM_STOP
-            MOV #'.',&$5CE
-            MOV #$4000,R0
+            MOV.B #'.',&$5CE
+            MOV.B #-1,&{UARTI2CS}+15
+            MOV #ACCEPT+$1C,R0
         THEN
+        CMP.B #-1,R8
+        0= IF
+            MOV.B #1,&{UARTI2CS}+15
+            MOV.B #$0D,&$5CE
+            BEGIN
+                BIT #2,&$5DC
+            0<> UNTIL
+            MOV.B #$0A,&$5CE
+        THEN
+        [DEFINED] LEDS [IF]
         BIS.B #2,&$202
+        [THEN]
         BEGIN
             BEGIN
                 BIC.B #4,&$265
                 MOV.B #8,R10
                 BEGIN
-                    BIC.B #2,&$265
-                    BIT.B #4,&$261
-                    BIS.B #2,&$265
-                    ADDC.B R9,R9
-                    SUB #1,R10
+                  BIC.B #2,&$265
+                  BIT.B #4,&$261
+                  BIS.B #2,&$265
+                  ADDC.B R9,R9
+                  SUB #1,R10
                 0= UNTIL
                 CMP.B #-1,R9
-                0= IF
-                    MOV #2,R9
-                THEN
+            0<> WHILE
                 CMP.B #8,R9
             U>= WHILE
                 BIS.B #4,&$265
@@ -227,15 +304,20 @@ FW2
                     BIT.B #2,&$261
                 0<> UNTIL
                 BIS.B #2,&$265
-                BEGIN
-                    BIT #2,&$5DC
-                0<> UNTIL
-                MOV.B R9,&$5CE
+                CMP.B #4,R8
+                0<> IF
+                    BEGIN
+                        BIT #2,&$5DC
+                    0<> UNTIL
+                    MOV.B R9,&$5CE
+                THEN
             REPEAT
-            CMP.B #4,R9
-            U>= IF
-                MOV.B R9,&{UARTI2CS}+9
-                BIS.B #4,&$265
+                CMP.B #4,R9
+                U>= IF
+                   MOV.B R9,R8
+                   MOV.B R8,&{UARTI2CS}+15
+                   BIS.B #4,&$265
+                THEN
             THEN
             BIC.B #2,&$265
             BEGIN
@@ -246,93 +328,81 @@ FW2
         0<> UNTIL
         CMP.B #2,R9
     U>= WHILE
-        0= IF
-            MOV.B #0,&{UARTI2CS}+9
-            CALL #KEY+$8
-            BEGIN
-                BIC #1,&$5DC
-                MOV &$1800,R9
-               BEGIN MOV #65,R10
-                   BEGIN SUB #1,R10
-                   0= UNTIL
-                   SUB #1,R9
+        BIC.B #2,&$265
+        CALL #KEY+8
+        BEGIN
+            BIC #1,&$5DC
+            MOV &$1800,R9
+           BEGIN MOV #65,R10
+               BEGIN SUB #1,R10
                0= UNTIL
-                BIT #1,&$5DC
-            0= UNTIL
-        THEN    
+               SUB #1,R9
+           0= UNTIL
+            BIT #1,&$5DC
+        0= UNTIL
+        MOV.B #0,R8
     REPEAT
     CALL #I2CM_STOP
+    [DEFINED] LEDS [IF]
     BIC.B #2,&$202
+    [THEN]
     CMP.B #0,R9
     0= IF
-        MOV #$4000,R0
+        MOV #ACCEPT+$1C,R0
     THEN
-    CALL #KEY+$8
+    CALL #KEY+8
     BEGIN
         BIT #1,&$5DC
     0<> UNTIL
-    CALL #ACCEPT+$2A
+    CALL #ACCEPT+$26
     MOV #0,R11
     GOTO BW2
     ENDCODE
 
-    HDNCODE SLEEP_U2I
-    $180E $4000 TSTBIT
-    [IF]    MOV #%1_1001_0100,&$3C0 ; if ACLK=LFXTAL
-    [ELSE]  MOV #%1_0001_0100,&$3C0 ; if ACLK=VLO
-    [THEN]
-    MOV.B &{UARTI2CS}+9,R10
-    MOV #$0D,R12
-    MOV #0,R11
-    BIC #$40,&$21C
-    MOV &{UARTI2CS}+2,R0
-    ENDCODE
-
-    HDNCODE INIT_U2I
-    MOV #4096,&$3D2
-    MOV #$60,&$3C6
-    MOV #4095,&$3D6
-    BIS.B #$80,&$204
-    BIS.B #$80,&$20C
-    BIS.B #$40,&$21A  
-    BIC.B #6,&$267
-    BIC.B #6,&$263
-    BIS.B #1,&$204
-    BIS.B #2,&$204
-    CALL &{UARTI2CS}
-    CMP #$0E,R14
-    0<> IF
-        CMP #$0A,R14
-        U>= ?GOTO BW1
-    THEN
-    BIS.B #$40,&$21C
-    MOV #ALLOT+$8,R0
-    ENDCODE
-
-    : UARTI2CS
+    CODE START_U2I
+    SUB #2,R15
+    MOV R14,0(R15)
+    COLON
     $0D EMIT $0A EMIT
+    ." Connect to I2C_SLAVE at @"
+    . $08 EMIT
+     ." , TERATERM(Alt-B) "
+    ." or I2C_MASTER(SW1) to quit..."
     HI2LO
     MOV @R1+,R13
     BEGIN
         BIT #1,&$5CA
     0= UNTIL
-    CMP #$4082,&{UARTI2CS}-2
+    CMP #<#+$4C,&{UARTI2CS}-2
     0= IF
         MOV #REMOVE_U2I,&{UARTI2CS}-2
-        MOV &$183E,&{UARTI2CS}
-        MOV &$1840,&{UARTI2CS}+2
-        MOV &$FFF0,&{UARTI2CS}+4
-        MOV &$FFDE,&{UARTI2CS}+6
-        MOV R14,&{UARTI2CS}+8
+        MOV &$183C,&{UARTI2CS}
+        MOV #STOP_U2I,&$183C
+        MOV &$1842,&{UARTI2CS}+2
+        MOV #HARD_U2I,&$1842
+        MOV &$1844,&{UARTI2CS}+4
+        MOV #BACKGRND_U2I,&$1844
+        MOV &$FFF0,&{UARTI2CS}+6
+        MOV #U2I_TERM_INT,&$FFF0
+        MOV &$FFDE,&{UARTI2CS}+8
+        MOV #500MS_INT,&$FFDE
+        MOV R14,&{UARTI2CS}+10
+        $180E $4000 TSTBIT
+        [IF]   MOV #$0194,&{UARTI2CS}+12
+        [ELSE] MOV #$0114,&{UARTI2CS}+12
+        [THEN]
+        $1800 @ 24000 =
+        [IF]   MOV #116,&{UARTI2CS}+14
+        [ELSE] $1800 @ 16000 =
+          [IF]   MOV #76,&{UARTI2CS}+14
+          [ELSE] MOV #36,&{UARTI2CS}+14
+          [THEN]
+        [THEN]
     THEN
     MOV #0,R14
-    MOV #INIT_U2I,&$183E
-    MOV #SLEEP_U2I,&$1840
-    MOV #U2I_TERM_INT,&$FFF0
-    MOV #500MS_INT,&$FFDE
-    MOV #INIT_U2I,R0
+    GOTO BW3
     ENDCODE
 
-    RST_SET ECHO    
+RST_SET ECHO
 
-    $12 UARTI2CS   ; TERATERM(Alt-B) or USB_to_I2C_bridge(SW2) to quit
+#18 START_U2I