OSDN Git Service

V 3.2
[fast-forth/master.git] / MSP430-FORTH / MSP_EXP430FR5994 / CHNGBAUD.4TH
index 3ee4f9f..5680131 100644 (file)
 
 PWR_STATE
 
-[UNDEFINED] CONSTANT [IF]
-: CONSTANT 
-DEFER
-HI2LO
-MOV @R1+,R13
-MOV #$1285,-4(R10)
-MOV R14,-2(R10)
-MOV @R15+,R14
+[UNDEFINED] SWAP [IF]
+CODE SWAP
+MOV @R15,R10
+MOV R14,0(R15)
+MOV R10,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] = [IF]
+CODE =
+SUB @R15+,R14
+0<> IF
+    AND #0,R14
+ELSE
+    XOR #-1,R14
+THEN
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] 0= [IF]
+CODE 0=
+SUB #1,R14
+SUBC R14,R14
 MOV @R13+,R0
 ENDCODE
 [THEN]
 
-[UNDEFINED] BL [IF]
-#32 CONSTANT BL
+[UNDEFINED] IF [IF]
+CODE IF
+SUB #2,R15
+MOV R14,0(R15)
+MOV &$1DC6,R14
+ADD #4,&$1DC6
+MOV #$404C,0(R14)
+ADD #2,R14
+MOV @R13+,R0
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] THEN [IF]
+CODE THEN
+MOV &$1DC6,0(R14)
+MOV @R15+,R14
+MOV @R13+,R0
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] ELSE [IF]
+CODE ELSE
+ADD #4,&$1DC6
+MOV &$1DC6,R10
+MOV #$4048,-4(R10)
+MOV R10,0(R14)
+SUB #2,R10
+MOV R10,R14
+MOV @R13+,R0
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] BEGIN [IF]
+CODE BEGIN
+MOV #HERE,R0
+ENDCODE IMMEDIATE
 [THEN]
 
-[UNDEFINED] SPACE [IF]
-: SPACE
-BL EMIT ;
+[UNDEFINED] AGAIN [IF]
+CODE AGAIN
+MOV #$4048,R9
+GOTO BW1
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] WHILE [IF]
+: WHILE
+POSTPONE IF SWAP
+; IMMEDIATE
+[THEN]
+
+[UNDEFINED] REPEAT [IF]
+: REPEAT
+POSTPONE AGAIN POSTPONE THEN
+; IMMEDIATE
+[THEN]
+
+[UNDEFINED] DO [IF]
+CODE DO
+SUB #2,R15
+MOV R14,0(R15)
+ADD #2,&$1DC6
+MOV &$1DC6,R14
+MOV #$4056,-2(R14)
+ADD #2,&$1C00
+MOV &$1C00,R10
+MOV #0,0(R10)
+MOV @R13+,R0
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] LOOP [IF]
+CODE LOOP
+    MOV #$4078,R9
+BW1 ADD #4,&$1DC6
+    MOV &$1DC6,R10
+    MOV R9,-4(R10)
+    MOV R14,-2(R10)
+BEGIN
+    MOV &$1C00,R14
+    SUB #2,&$1C00
+    MOV @R14,R14
+    CMP #0,R14
+0<> WHILE
+    MOV R10,0(R14)
+REPEAT
+    MOV @R15+,R14
+    MOV @R13+,R0
+ENDCODE IMMEDIATE
+[THEN]
+
+[UNDEFINED] >R [IF]
+CODE >R
+PUSH R14
+MOV @R15+,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] R> [IF]
+CODE R>
+MOV R6,R0
+ENDCODE
 [THEN]
 
 [UNDEFINED] R@ [IF]
@@ -35,6 +148,39 @@ MOV @R13+,R0
 ENDCODE
 [THEN]
 
+[UNDEFINED] DROP [IF]
+CODE DROP
+MOV @R15+,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] ?DUP [IF]
+CODE ?DUP
+CMP #0,R14
+0<> IF
+    SUB #2,R15
+    MOV R14,0(R15)
+THEN
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] @ [IF]
+CODE @
+MOV @R14,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
+[UNDEFINED] ! [IF]
+CODE !
+MOV @R15+,0(R14)
+MOV @R15+,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
 [UNDEFINED] < [IF]
 CODE <
     SUB @R15+,R14
@@ -53,52 +199,61 @@ FW1 AND #0,R14
 ENDCODE
 [THEN]
 
+[UNDEFINED] - [IF]
+CODE -
+SUB @R15+,R14
+XOR #-1,R14
+ADD #1,R14
+MOV @R13+,R0
+ENDCODE
+[THEN]
+
 [UNDEFINED] UM/MOD [IF]
 CODE UM/MOD
     PUSH #DROP
-    MOV #<#,R9
-    ADD #8,R9
-    MOV R9,R0
+    MOV #$407E,R0
 ENDCODE
 [THEN]
 
-: MCLK.
-0 1000 UM/MOD .
-;
-
-: ESC #27 EMIT ;
+[UNDEFINED] ESC" [IF]
+: ESC" $1B POSTPONE LITERAL POSTPONE EMIT POSTPONE S" POSTPONE TYPE ; IMMEDIATE
+[THEN]
 
 : BAD_MHz
-    1 ABORT"  only for 1,4,8,16,24 MHz MCLK!"
+$20 EMIT 1 ABORT" only for 1,4,8,16,24 MHz MCLK!"
 ;
 
-: BAD_SPEED
-SPACE ESC ." [7m"
-." with MCLK = " MCLK. 1 ABORT" MHz? don't dream!"
+: OVR_BAUDS
+$20 EMIT ESC" [7m"
+." with MCLK = " $1806 @ 0 1000 UM/MOD . DROP
+1 ABORT" MHz? don't dream!"
 ;
 
 : <> = 0= ;
 
 : CHNGBAUD
 PWR_STATE
-
+ECHO
 42
 0 DO CR LOOP
 
-ESC ." [1J"
-ESC ." [H"
+ESC" [1J"
+ESC" [H"
 
 $1806 @ >R
-." target MCLK = " R@ MCLK. ." MHz" CR
+." target MCLK = " R@ 0 1000 UM/MOD . ." MHz" DROP CR
 ." choose your baudrate:" CR
-." 0 --> 6 MBds" CR
-." 1 --> 5 MBds" CR
-." 2 --> 4 MBds" CR
-." 3 --> 2457600 Bds" CR
-." 4 --> 921600 Bds" CR
-." 5 --> 460800 Bds" CR
-." 6 --> 230400 Bds" CR
-." 7 --> 115200 Bds" CR
+."  0 --> 6 MBds" CR
+."  1 --> 5 MBds" CR
+."  2 --> 4 MBds" CR
+."  3 --> 2457600 Bds" CR
+."  4 --> 921600 Bds" CR
+."  5 --> 460800 Bds" CR
+."  6 --> 230400 Bds" CR
+."  7 --> 115200 Bds" CR
+."  8 --> 38400 Bds" CR
+."  9 --> 19200 Bds" CR
+."  A --> 9600 Bds" CR
 ." other --> abort" CR
 ." your choice: "
 KEY
@@ -106,129 +261,93 @@ KEY
 #48 - ?DUP 0=
 IF  ." 6 MBds"
     R@ #24000 <
-    IF  R@ BAD_SPEED
-    THEN
+    IF  OVR_BAUDS THEN
     R@ #24000 <>
-    IF  BAD_MHz
-    THEN                
+    IF  BAD_MHz  THEN
     $4
     $0
 ELSE 1 - ?DUP 0=
     IF  ." 5 MBds"
         R@ #16000 <
-        IF  R@ BAD_SPEED
-        THEN
+        IF  OVR_BAUDS THEN
         R@ #16000 =
         IF  $3
             $2100
         ELSE R@ #24000 <>
-            IF  BAD_MHz
-            THEN
+            IF  BAD_MHz  THEN
             $4
             $EE00
         THEN
     ELSE 1 - ?DUP 0=
         IF  ." 4 MBds"
             R@ #16000 <
-            IF  R@ BAD_SPEED
-            THEN
+            IF  OVR_BAUDS THEN
             R@ #16000 =
-                IF  $4
-                    $0
+                IF  $4 $0
                 ELSE R@ #24000 <>
-                    IF  BAD_MHz
-                    THEN
-                    $6
-                    $0
+                    IF  BAD_MHz  THEN
+                    $6 $0
                 THEN
         ELSE 1 - ?DUP 0=
             IF  ." 2457600 Bds"
                 R@ #8000 <
-                IF  R@ BAD_SPEED
-                THEN
+                IF  OVR_BAUDS THEN
                 R@ #8000 =
-                IF  $3
-                    $4400
+                IF  $3 $4400
                 ELSE R@ #16000 =
-                    IF  $6
-                        $AA00
+                    IF  $6 $AA00
                     ELSE R@ #24000 <>
-                        IF  BAD_MHz
-                        THEN
-                        $9
-                        $DD00
+                        IF  BAD_MHz  THEN
+                        $9 $DD00
                     THEN
                 THEN
             ELSE 1 - ?DUP 0=
                 IF  ." 921600 Bds"
                     R@ #4000 <
-                    IF  R@ BAD_SPEED
-                    THEN
+                    IF  OVR_BAUDS THEN
                     R@ #4000 =
-                    IF  4
-                        $4900
-                    ELSE
-                        R@ #8000 =
-                        IF  8
-                            $D600
+                    IF  4 $4900
+                    ELSE R@ #8000 =
+                        IF  8 $D600
                         ELSE R@ #16000 =
-                            IF  $11
-                                $4A00
+                            IF  $11 $4A00
                             ELSE R@ #24000 <>
-                                IF  BAD_MHz
-                                THEN
-                                $1
-                                $00A1
+                                IF  BAD_MHz  THEN
+                                $1 $00A1
                             THEN
                         THEN
                     THEN
                 ELSE 1 - ?DUP 0=
                     IF  ." 460800 Bds"
                         R@ #4000 <
-                        IF  R@ BAD_SPEED
-                        THEN
+                        IF  OVR_BAUDS THEN
                         R@ #4000  =
-                        IF  8
-                            $D600
-                        ELSE
-                            R@ #8000  =
-                            IF  17
-                                $4A00
+                        IF  8 $D600
+                        ELSE R@ #8000  =
+                            IF $11 $4A00
                             ELSE R@ #16000 =
-                                IF  2
-                                    $BB21
+                                IF $2 $BB21
                                 ELSE R@ #24000 <>
-                                    IF  BAD_MHz
-                                    THEN
-                                    6
-                                    $0001
+                                    IF  BAD_MHz  THEN
+                                    $6 $0001
                                 THEN
                             THEN
                         THEN
                     ELSE 1 - ?DUP 0=
                         IF  ." 230400 Bds"
                             R@ #1000 <
-                            IF  R@ BAD_SPEED
-                            THEN
+                            IF  OVR_BAUDS THEN
                             R@ #1000 =
-                            IF  4
-                                $4900
-                            ELSE
-                                R@ #4000  =
-                                IF  17
-                                    $4A00
-                                ELSE
-                                    R@ #8000  =
-                                    IF  2
-                                        $BB21
+                            IF  4 $4900
+                            ELSE R@ #4000  =
+                                IF $11 $4A00
+                                ELSE R@ #8000  =
+                                    IF  2 $BB21
                                     ELSE R@ #16000 =
-                                        IF  4
-                                            $5551
+                                        IF  4 $5551
                                         ELSE R@ #24000 <>
-                                            IF  BAD_MHz
-                                            THEN
-                                            3
-                                            $0241
+                                            IF  BAD_MHz  THEN
+                                            3 $0241
                                         THEN
                                     THEN
                                 THEN
@@ -236,30 +355,76 @@ ELSE 1 - ?DUP 0=
                         ELSE 1 - ?DUP 0=
                             IF  ." 115200 Bds"
                                 R@ #1000  =
-                                IF  8
-                                    $D600
-                                ELSE
-                                    R@ #4000  =
-                                    IF  2
-                                        $BB21
-                                    ELSE
-                                        R@ #8000  =
-                                        IF  4
-                                            $5551
+                                IF  8 $D600
+                                ELSE R@ #4000  =
+                                    IF  2 $BB21
+                                    ELSE R@ #8000  =
+                                        IF  4 $5551
                                         ELSE R@ #16000 =
-                                            IF  8
-                                                $F7A1
+                                            IF  8 $F7A1
                                             ELSE R@ #24000 <>
-                                                IF  BAD_MHz
+                                                IF  BAD_MHz  THEN
+                                                $0D $4901
+                                            THEN
+                                        THEN
+                                    THEN
+                                THEN
+                            ELSE 1 - ?DUP 0=
+                                IF  ." 38400 Bds"
+                                    R@ #1000  =
+                                    IF  $1  $00A1
+                                    ELSE R@ #4000  =
+                                        IF  $6  $2081
+                                        ELSE R@ #8000  =
+                                            IF  $0D $4901
+                                            ELSE R@ #16000 =
+                                                IF  $1A $D601
+                                                ELSE R@ #24000 <>
+                                                    IF  BAD_MHz  THEN
+                                                    $27 $0011
+                                                THEN
+                                            THEN
+                                        THEN
+                                    THEN
+                                ELSE 1 - ?DUP 0=
+                                    IF  ." 19200 Bds"
+                                        R@ #1000  =
+                                        IF  $3  $0241
+                                        ELSE R@ #4000  =
+                                            IF  $0D $4901
+                                            ELSE R@ #8000  =
+                                                IF  $1A $D601
+                                                ELSE R@ #16000 =
+                                                    IF  $34 $4911
+                                                    ELSE R@ #24000 <>
+                                                        IF  BAD_MHz  THEN
+                                                        $4E $0021
+                                                    THEN
+                                                THEN
+                                            THEN
+                                        THEN
+                                    ELSE 8 - ?DUP 0=
+                                        IF  ." 9600 Bds"
+                                            R@ #1000  =
+                                            IF  $6  $2081
+                                            ELSE R@ #4000  =
+                                                IF  $1A $D601
+                                                ELSE R@ #8000  =
+                                                    IF  $34 $4911
+                                                    ELSE R@ #16000 =
+                                                        IF  $68 $D621
+                                                        ELSE R@ #24000 <>
+                                                            IF  BAD_MHz  THEN
+                                                            $9C $0041
+                                                        THEN
+                                                    THEN
                                                 THEN
-                                                $0D
-                                                $4901
                                             THEN
+                                        ELSE
+                                            ." abort" CR ABORT
                                         THEN
                                     THEN
                                 THEN
-                            ELSE
-                                ." abort" CR ABORT
                             THEN
                         THEN
                     THEN
@@ -271,8 +436,8 @@ THEN
 $1804 !
 $1802 !
 R> DROP
-CR ESC ." [7m"
-." Change baudrate in Teraterm, save its setup then reset target."
+CR ESC" [7m"
+." Change baudrate in Teraterm, save its setup, then reset target."
 ;
 
-ECHO CHNGBAUD 
+CHNGBAUD