OSDN Git Service

V309
[fast-forth/master.git] / MSP430-FORTH / SD_430FR5994 / FF_SPECS.4TH
diff --git a/MSP430-FORTH/SD_430FR5994/FF_SPECS.4TH b/MSP430-FORTH/SD_430FR5994/FF_SPECS.4TH
new file mode 100644 (file)
index 0000000..f08f9a4
--- /dev/null
@@ -0,0 +1,674 @@
+
+; ---------------------------------
+; FF_SPECS.4th for MSP_EXP430FR5994
+; ---------------------------------
+
+    CODE ABORT_FF_SPECS
+    SUB #2,R15
+    MOV R14,0(R15)
+    MOV &$180A,R14
+    SUB #309,R14
+    COLON
+    $0D EMIT
+    ABORT" FastForth V3.9 please!"
+    RST_RET
+    ;
+
+    ABORT_FF_SPECS
+
+    [UNDEFINED] DUP
+    [IF]
+    CODE DUP
+BW1 SUB #2,R15
+    MOV R14,0(R15)
+    MOV @R13+,R0
+    ENDCODE
+
+    CODE ?DUP
+    CMP #0,R14
+    0<> ?GOTO BW1
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] OVER
+    [IF]
+    CODE OVER
+    MOV R14,-2(R15)
+    MOV @R15,R14
+    SUB #2,R15
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] DROP
+    [IF]
+    CODE DROP
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] SWAP
+    [IF]
+    CODE SWAP
+    MOV @R15,R10
+    MOV R14,0(R15)
+    MOV R10,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] ROT
+    [IF]
+    CODE ROT
+    MOV @R15,R10
+    MOV R14,0(R15)
+    MOV 2(R15),R14
+    MOV R10,2(R15)
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] >R
+    [IF]
+    CODE >R
+    PUSH R14
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] R>
+    [IF]
+    CODE R>
+    SUB #2,R15
+    MOV R14,0(R15)
+    MOV @R1+,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] 0<
+    [IF]
+    CODE 0<
+    ADD R14,R14
+    SUBC R14,R14
+    XOR #-1,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] =
+    [IF]
+    CODE =
+    SUB @R15+,R14
+    0<> IF
+        AND #0,R14
+        MOV @R13+,R0
+    THEN
+    XOR #-1,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] U<
+    [IF]
+    CODE U<
+    SUB @R15+,R14
+    U< ?GOTO FW1
+    0<> IF
+BW1 MOV #-1,R14
+    THEN
+    MOV @R13+,R0
+    ENDCODE
+
+    CODE U>
+    SUB @R15+,R14
+    U< ?GOTO BW1
+FW1 AND #0,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] IF
+    [IF]
+    CODE IF
+    SUB #2,R15
+    MOV R14,0(R15)
+    MOV &$1DC8,R14
+    ADD #4,&$1DC8
+    MOV #$40AC,0(R14)
+    ADD #2,R14
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+
+    CODE THEN
+    MOV &$1DC8,0(R14)
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+    [THEN]
+
+    [UNDEFINED] ELSE
+    [IF]
+    CODE ELSE
+    ADD #4,&$1DC8
+    MOV &$1DC8,R10
+    MOV #$40B2,-4(R10)
+    MOV R10,0(R14)
+    SUB #2,R10
+    MOV R10,R14
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+    [THEN]
+
+    [UNDEFINED] BEGIN
+    [IF]
+    CODE BEGIN
+    MOV #$4032,R0
+    ENDCODE IMMEDIATE
+    
+    CODE UNTIL
+    MOV #$40AC,R9
+BW1 ADD #4,&$1DC8
+    MOV &$1DC8,R10
+    MOV R9,-4(R10)
+    MOV R14,-2(R10)
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+    
+    CODE AGAIN
+    MOV #$40B2,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]
+    HDNCODE XDO
+    MOV #$8000,R9
+    SUB @R15+,R9
+    MOV R14,R8
+    ADD R9,R8
+    PUSHM #2,R9
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE
+
+    CODE DO            
+    SUB #2,R15
+    MOV R14,0(R15)
+    ADD #2,&$1DC8
+    MOV &$1DC8,R14
+    MOV #XDO,-2(R14)
+    ADD #2,&$1C00
+    MOV &$1C00,R10
+    MOV #0,0(R10)
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+
+    HDNCODE XLOOP
+    ADD #1,0(R1)
+BW1 BIT #$100,R2
+    0= IF
+        MOV @R13,R13
+        MOV @R13+,R0
+    THEN
+    ADD #4,R1
+    ADD #2,R13
+    MOV @R13+,R0
+    ENDCODE
+
+    CODE LOOP
+    MOV #XLOOP,R9
+BW2 ADD #4,&$1DC8
+    MOV &$1DC8,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
+
+    HDNCODE XPLOO
+    ADD R14,0(R1)
+    MOV @R15+,R14
+    GOTO BW1
+    ENDCODE
+
+    CODE +LOOP
+    MOV #XPLOO,R9
+    GOTO BW2
+    ENDCODE IMMEDIATE
+    [THEN]
+
+    [UNDEFINED] I
+    [IF]
+    CODE I
+    SUB #2,R15
+    MOV R14,0(R15)
+    MOV @R1,R14
+    SUB 2(R1),R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] HERE
+    [IF]
+    CODE HERE
+    MOV #$4032,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] C@
+    [IF]
+    CODE C@
+    MOV.B @R14,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] SPACES
+    [IF]
+    CODE SPACES
+    CMP #0,R14
+    0<> IF
+        PUSH R13
+        BEGIN
+            LO2HI
+            $20 EMIT
+            HI2LO
+            SUB #1,R14
+        0= UNTIL
+        MOV @R1+,R13
+    THEN
+    MOV @R15+,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] 1+
+    [IF]
+    CODE 1+
+    ADD #1,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] +
+    [IF]
+    CODE +
+    ADD @R15+,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] -
+    [IF]
+    CODE -
+    SUB @R15+,R14
+    XOR #-1,R14
+    ADD #1,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] 2*
+    [IF]
+    CODE 2*
+    ADD R14,R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] 2/ 
+    [IF]
+    CODE 2/
+    RRA R14
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] UM/MOD
+    [IF]
+    CODE UM/MOD
+    PUSH #DROP
+    MOV #$403E,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] MOVE
+    [IF]
+    CODE MOVE
+    MOV R14,R10
+    MOV @R15+,R8
+    MOV @R15+,R9
+    MOV @R15+,R14
+    CMP #0,R10
+    0<> IF
+        CMP R9,R8
+        0<> IF
+            U< IF
+                BEGIN
+                    MOV.B @R9+,0(R8)
+                    ADD #1,R8
+                    SUB #1,R10
+                0= UNTIL
+                MOV @R13+,R0
+            THEN
+            ADD R10,R8
+            ADD R10,R9
+            BEGIN
+                SUB #1,R9
+                SUB #1,R8
+                MOV.B @R9,0(R8)
+                SUB #1,R10
+            0= UNTIL
+        THEN
+    THEN
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    [UNDEFINED] CR
+    [IF]
+
+    CODE CR
+    MOV #$40B4,R0
+    ENDCODE
+    
+    :NONAME
+    $0D EMIT $0A EMIT
+    ; IS CR
+
+    [THEN]
+
+    : WORDS
+    $1CE4
+    $180C @ 2*
+    MOVE
+    BEGIN
+        0 DUP
+        $180C @ 2* 0
+            DO
+            DUP I $1CE4 + @
+                U< IF
+                    DROP DROP
+                    I DUP $1CE4 + @
+                THEN
+            2 +LOOP
+        ?DUP
+    WHILE
+        DUP
+        2 - @
+        ROT
+        $1CE4 +
+        !
+        COUNT 2/
+        DUP >R TYPE
+        $10 R> - SPACES
+    REPEAT
+    DROP
+    ;
+
+    [UNDEFINED] CASE
+    [IF]
+    : CASE
+    0 
+    ; IMMEDIATE
+
+    : OF
+    1+ 
+    >R 
+    POSTPONE OVER 
+    POSTPONE =
+    POSTPONE IF        
+    POSTPONE DROP      
+    R> 
+    ; IMMEDIATE 
+
+    : ENDOF
+    >R 
+    POSTPONE ELSE 
+    R> 
+    ; IMMEDIATE 
+
+    : ENDCASE
+    POSTPONE DROP
+    0 DO 
+        POSTPONE THEN 
+    LOOP 
+    ; IMMEDIATE 
+    [THEN]
+
+    [UNDEFINED] S_
+    [IF]
+    CODE S_
+    MOV #0,&$1DC0
+    COLON
+    $401E ,
+    $20 WORD
+    HI2LO
+    MOV.B @R14,R14
+    ADD #1,R14
+    BIT #1,R14
+    ADDC R14,&$1DC8
+    MOV @R15+,R14
+    MOV @R1+,R13
+    MOV #$20,&$1DC0
+    MOV @R13+,R0
+    ENDCODE IMMEDIATE
+    [THEN]
+
+    [UNDEFINED] ESC
+    [IF]
+    CODE ESC
+    CMP #0,&$1DBC
+    0= IF MOV @R13+,R0
+    THEN
+    COLON
+    $1B
+    POSTPONE LITERAL
+    POSTPONE EMIT
+    POSTPONE S_
+    POSTPONE TYPE
+    ; IMMEDIATE
+    [THEN]
+
+    [DEFINED] FORTH
+    [IF]
+    CODE BODY>SQNFA
+    SUB #2,R15
+    SUB #4,R14
+    MOV R14,R8
+    MOV R8,R9
+    BEGIN
+        SUB #2,R9
+        MOV R9,0(R15)
+        MOV.B @R9+,R14
+        RRA R14
+        MOV R14,R10       
+        BIT #1,R10
+        0= IF         
+            ADD #1,R10
+        THEN
+        ADD R9,R10
+        CMP R10,R8
+    0<> WHILE
+        MOV @R15,R9
+    REPEAT
+    MOV R9,0(R15)
+    MOV @R13+,R0
+    ENDCODE
+    [THEN]
+
+    : SPECS
+    RST_RET
+    ECHO
+    ESC [8;42;80t
+
+    ESC [7m
+    CR ." FastForth V"
+    $180A @         
+    0 <# # $08 HOLD # '.' HOLD #S #> TYPE
+    ."  for MSP430FR"
+    HERE
+    $1A04 @
+    CASE
+
+    $8102   OF  ." 5738,"   $C200   ENDOF
+    $8103   OF  ." 5739,"   $C200   ENDOF
+    $810D   OF  ." 5986,"   $4400   ENDOF
+    $8160   OF  ." 5948,"   $4400   ENDOF
+    $8169   OF  ." 5969,"   $4400   ENDOF
+    $81A8   OF  ." 6989,"   $4400   ENDOF
+    $81F0   OF  ." 4133,"   $C400   ENDOF
+    $8240   OF  ." 2433,"   $C400   ENDOF
+    $825D   OF  ." 5972,"   $4400   ENDOF
+    $82A1   OF  ." 5994,"   $4000   ENDOF
+    $82A6   OF  ." 5962,"   $4000   ENDOF
+    $830C   OF  ." 2355,"   $8000   ENDOF
+    $830D   OF  ." 2353,"   $C000   ENDOF
+    $831E   OF  ." 2155,"   $8000   ENDOF
+    $831D   OF  ." 2153,"   $C000   ENDOF
+    $832A   OF  ." 2476,"   $8000   ENDOF
+    $832B   OF  ." 2475,"   $8000   ENDOF
+    $833C   OF  ." 2633,"   $C400   ENDOF
+    $833D   OF  ." 2533,"   $C400   ENDOF
+    ABORT" xxxx <-- unrecognized device!"
+    ENDCASE
+    ['] ['] DUP @ $1284 =
+    IF ."  DTC=1," DROP
+    ELSE 2 + @ $1284 =
+        IF ."  DTC=2,"
+        ELSE ."  DTC=3,"
+        THEN
+    THEN
+    $20 EMIT 
+    $180C @ U. $08 EMIT
+    ." -Entry word set, "
+    $1800 @ 0 1000 UM/MOD U.
+    ?DUP IF $08 EMIT ',' EMIT U.
+    THEN ." MHz, "
+    - U. ." bytes"
+    ESC [0m
+
+    CR
+    ." /COUNTED-STRING   = 255" CR 
+    ." /HOLD             = 34" CR
+    ." /PAD              = 84" CR
+    ." ADDRESS-UNIT-BITS = 16" CR
+    ." FLOORED DIVISION  = "
+    $180E @
+    0< IF ." true"
+    ELSE  ." false"
+    THEN    CR
+    ." MAX-CHAR          = 255" CR
+    ." MAX-N             = 32767" CR
+    ." MAX-U             = 65535" CR
+    ." MAX-D             = 2147483647" CR
+    ." MAX-UD            = 4294967295" CR
+    ." STACK-CELLS       = 48" CR
+    ." RETURN-STACK-CELLS= 48" CR
+    ." Definitions are forced to UPPERCASE." CR
+
+    CR ESC [7m ." Kernel add-ons" ESC [0m CR
+    $180E @
+    2*  DUP 0< IF ." 32.768kHz LF XTAL" CR THEN
+    2*  DUP 0< IF ." /RTS /CTS " 2*
+            ELSE  2* DUP
+                0< IF ." /RTS " THEN
+            THEN
+    2*  DUP 0< IF ." XON/XOFF "  THEN
+    2*  DUP 0< IF ." Half-Duplex "  THEN
+    2*  DUP 0< IF ." I2C_Master TERMINAL"
+            ELSE  ." UART TERMINAL" THEN CR
+    2*  DUP 0< IF 2* DUP 0< IF ." DOUBLE and "
+                         THEN  ." Q15.16 numbers handling" CR
+            ELSE  2* DUP 0< IF ." DOUBLE numbers handling" CR
+                         THEN                       
+            THEN                    
+    2*  DUP 0< IF ." MSP430_X assembler with TI's syntax" 
+                    CR 2* 2*
+            ELSE
+                2*  DUP                   
+                0< IF ." MSP430 Assembler"
+                    2*  DUP
+                    0< IF ." , 20bits extended addresses,"
+                    THEN
+                ELSE 2*
+                THEN
+                ."  with TI's syntax" CR
+            THEN DROP
+    [DEFINED] FORTH [IF] ." word-set management" CR 
+    [THEN]
+    [DEFINED] LOAD" [IF] ." SD_CARD Load" CR
+    [THEN]
+    [DEFINED] BOOT  [IF] ." SD_CARD Bootloader" CR 
+    [THEN]
+    [DEFINED] READ" [IF] ." SD_CARD Read/Write" CR 
+    [THEN]
+
+    $1DCA
+    BEGIN
+        @ ?DUP
+    WHILE
+        DUP $180C @ 2* -
+        CR ESC [7m 
+        [DEFINED] FORTH
+        [IF] DUP BODY>SQNFA
+        [ELSE]  OVER @
+                IF S" hidden"
+                ELSE S" FORTH"
+                THEN
+        [THEN]
+        TYPE ."  word-set"
+        ESC [0m CR        
+        WORDS CR
+    REPEAT
+
+    CR ESC [7m ." EXTENSIONS" ESC [0m
+    [DEFINED] {CORE_ANS} [IF] CR  ." core ANS94"
+    [THEN]
+    [DEFINED] {DOUBLE}   [IF] CR  ." DOUBLE word set"
+    [THEN]
+    [DEFINED] {UTILITY}  [IF] CR ." UTILITY" 
+    [THEN]
+    [DEFINED] {FIXPOINT} [IF] CR ." Q15.16 ADD SUB MUL DIV" 
+    [THEN]
+    [DEFINED] {CORDIC}   [IF] CR ." CORDIC engine"
+    [THEN]
+    [DEFINED] {SD_TOOLS} [IF] CR ." SD_TOOLS" 
+    [THEN]
+    [DEFINED] {RTC}      [IF] CR ." RTC utility" 
+    [THEN]
+    [DEFINED] {UARTI2CS} [IF] CR ." UART to I2C_FastForth bridge" 
+    [THEN]
+    CR
+    0 SYS
+    ;
+
+SPECS