+; --------------------
+; RTC.4th for MSP_EXP430FR5994
+; --------------------
+
CODE ABORT_RTC
SUB #4,R15
MOV R14,2(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" target without LF_XTAL !"
RST_RET
;
ABORT_RTC
-; --------------------
-; RTC.4th for MSP_EXP430FR5994
-; --------------------
-
-
MARKER {RTC}
- [UNDEFINED] OR
- [IF]
+; ------------------------------------------------------------------
+; first we download the set of definitions we need (from CORE_ANS.4th for MSP_EXP430FR5994)
+; ------------------------------------------------------------------
+
+ [UNDEFINED] OR [IF]
CODE OR
BIS @R15+,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] C@
- [IF]
+ [UNDEFINED] C@ [IF]
CODE C@
MOV.B @R14,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] C!
- [IF]
+ [UNDEFINED] C! [IF]
CODE C!
MOV.B @R15+,0(R14)
ADD #1,R15
ENDCODE
[THEN]
- [UNDEFINED] SWAP
- [IF]
+ [UNDEFINED] SWAP [IF]
CODE SWAP
MOV @R15,R10
MOV R14,0(R15)
ENDCODE
[THEN]
- [UNDEFINED] OVER
- [IF]
+ [UNDEFINED] OVER [IF]
CODE OVER
MOV R14,-2(R15)
MOV @R15,R14
ENDCODE
[THEN]
- [UNDEFINED] DUP
- [IF]
+ [UNDEFINED] DUP [IF]
CODE DUP
BW1 SUB #2,R15
MOV R14,0(R15)
ENDCODE
[THEN]
- [UNDEFINED] DROP
- [IF]
+ [UNDEFINED] DROP [IF]
CODE DROP
MOV @R15+,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] DEPTH
- [IF]
+ [UNDEFINED] DEPTH [IF]
CODE DEPTH
MOV R14,-2(R15)
MOV #$1C80,R14
ENDCODE
[THEN]
- [UNDEFINED] >R
- [IF]
+ [UNDEFINED] >R [IF]
CODE >R
PUSH R14
MOV @R15+,R14
ENDCODE
[THEN]
- [UNDEFINED] R>
- [IF]
+ [UNDEFINED] R> [IF]
CODE R>
SUB #2,R15
MOV R14,0(R15)
ENDCODE
[THEN]
- [UNDEFINED] 1+
- [IF]
+ [UNDEFINED] 1+ [IF]
CODE 1+
ADD #1,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] 1-
- [IF]
+ [UNDEFINED] 1- [IF]
CODE 1-
SUB #1,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] U<
+ [UNDEFINED] U<
[IF]
CODE U<
SUB @R15+,R14
ENDCODE
[THEN]
- [UNDEFINED] =
- [IF]
+ [UNDEFINED] = [IF]
CODE =
SUB @R15+,R14
0<> IF
ENDCODE
[THEN]
- [UNDEFINED] IF
- [IF]
+ [UNDEFINED] IF [IF]
+
CODE IF
SUB #2,R15
MOV R14,0(R15)
- MOV &$1DC8,R14
- ADD #4,&$1DC8
- MOV #$40AC,0(R14)
+ MOV &$1DBE,R14
+ ADD #4,&$1DBE
+ MOV #[THEN]+$52,0(R14)
ADD #2,R14
MOV @R13+,R0
ENDCODE IMMEDIATE
CODE THEN
- MOV &$1DC8,0(R14)
+ MOV &$1DBE,0(R14)
MOV @R15+,R14
MOV @R13+,R0
ENDCODE IMMEDIATE
[THEN]
- [UNDEFINED] ELSE
- [IF]
+ [UNDEFINED] ELSE [IF]
CODE ELSE
- ADD #4,&$1DC8
- MOV &$1DC8,R10
- MOV #$40B2,-4(R10)
+ ADD #4,&$1DBE
+ MOV &$1DBE,R10
+ MOV #[THEN]+$58,-4(R10)
MOV R10,0(R14)
SUB #2,R10
MOV R10,R14
MOV @R13+,R0
ENDCODE IMMEDIATE
+
[THEN]
- [UNDEFINED] DO
- [IF]
+ [UNDEFINED] DO [IF]
+
HDNCODE XDO
MOV #$8000,R9
SUB @R15+,R9
MOV @R13+,R0
ENDCODE
- CODE DO
+ CODE DO
SUB #2,R15
MOV R14,0(R15)
- ADD #2,&$1DC8
- MOV &$1DC8,R14
+ ADD #2,&$1DBE
+ MOV &$1DBE,R14
MOV #XDO,-2(R14)
ADD #2,&$1C00
MOV &$1C00,R10
CODE LOOP
MOV #XLOOP,R9
-BW2 ADD #4,&$1DC8
- MOV &$1DC8,R10
+BW2 ADD #4,&$1DBE
+ MOV &$1DBE,R10
MOV R9,-4(R10)
MOV R14,-2(R10)
BEGIN
MOV #XPLOO,R9
GOTO BW2
ENDCODE IMMEDIATE
+
[THEN]
- [UNDEFINED] BEGIN
- [IF]
+ [UNDEFINED] BEGIN [IF]
CODE BEGIN
- MOV #$4032,R0
+ MOV #BEGIN,R0
ENDCODE IMMEDIATE
-
+
CODE UNTIL
- MOV #$40AC,R9
-BW1 ADD #4,&$1DC8
- MOV &$1DC8,R10
+ MOV #[THEN]+$52,R9
+BW1 ADD #4,&$1DBE
+ MOV &$1DBE,R10
MOV R9,-4(R10)
MOV R14,-2(R10)
MOV @R15+,R14
MOV @R13+,R0
ENDCODE IMMEDIATE
-
+
CODE AGAIN
- MOV #$40B2,R9
+ MOV #[THEN]+$58,R9
GOTO BW1
ENDCODE IMMEDIATE
-
+
: WHILE
POSTPONE IF SWAP
; IMMEDIATE
-
+
: REPEAT
POSTPONE AGAIN POSTPONE THEN
; IMMEDIATE
+
[THEN]
- [UNDEFINED] CASE
- [IF]
- : CASE
- 0
+ [UNDEFINED] CASE [IF]
+ : CASE
+ 0
; IMMEDIATE
: OF
POSTPONE IF
POSTPONE DROP
R>
- ; IMMEDIATE
+ ; IMMEDIATE
: ENDOF
>R
- POSTPONE ELSE
+ POSTPONE ELSE
R>
- ; IMMEDIATE
+ ; IMMEDIATE
: ENDCASE
POSTPONE DROP
- 0 DO
- POSTPONE THEN
- LOOP
- ; IMMEDIATE
+ 0 DO
+ POSTPONE THEN
+ LOOP
+ ; IMMEDIATE
[THEN]
- [UNDEFINED] +
- [IF]
+ [UNDEFINED] + [IF]
CODE +
ADD @R15+,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] -
- [IF]
+ [UNDEFINED] - [IF]
CODE -
SUB @R15+,R14
XOR #-1,R14
ENDCODE
[THEN]
- [UNDEFINED] MAX
- [IF]
+ [UNDEFINED] MAX [IF]
CODE MAX
CMP @R15,R14
S< ?GOTO FW1
[THEN]
- [UNDEFINED] 2*
- [IF]
+ [UNDEFINED] 2* [IF]
CODE 2*
ADD R14,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] UM*
- [IF]
+ [UNDEFINED] UM* [IF]
CODE UM*
MOV @R15,&$4C0
BW1 MOV R14,&$4C8
ENDCODE
[THEN]
- [UNDEFINED] UM/MOD
- [IF]
+ [UNDEFINED] UM/MOD [IF]
CODE UM/MOD
PUSH #DROP
- MOV #$403E,R0
+ MOV #<#+8,R0
ENDCODE
[THEN]
+; --------------------------
+; end of definitions we need
+; --------------------------
+
: U*/
>R UM* R> UM/MOD SWAP DROP
;
U/MOD SWAP DROP
;
- [UNDEFINED] SPACES
- [IF]
+ [UNDEFINED] SPACES [IF]
: SPACES
BEGIN
?DUP
;
[THEN]
- [UNDEFINED] U.R
+ [UNDEFINED] U.R
[IF]
: U.R
- >R <# 0 # #S #>
+ >R <# 0 # #S #>
R> OVER - 0 MAX SPACES TYPE
;
[THEN]
COLON
$4B2 C@ 2 U.R ':' EMIT
$4B1 C@ 2 U.R ':' EMIT
- $4B0 C@ 2 U.R
+ $4B0 C@ 2 U.R
;
-
+
: TIME!
2 DEPTH
U< IF
$4B1 C!
$4B2 C!
THEN
- ." it is " TIME?
+ ." it is " TIME?
;
CODE DATE?
4 OF ." Wed" ENDOF
5 OF ." Thu" ENDOF
6 OF ." Fri" ENDOF
- ENDCASE
+ ENDCASE
$4B6 @
$4B5 C@
$4B4 C@
$4B5 C@
$4B6 @
OVER 3 U<
- IF 1 - SWAP 12 + SWAP
+ IF 1 - SWAP 12 + SWAP
THEN
100 U/MOD
DUP 4 U/ SWAP 2* -
SWAP 1+ 13 5 U*/ + +
7 UMOD
$4B3 C!
- ." we are on " DATE?
+ ." we are on " DATE?
;
- RST_SET
-
- [UNDEFINED] S_
- [IF]
+ [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
+ SUB #2,R15
+ MOV R14,0(R15)
+ MOV #$20,R14
+ MOV #S"+10,R0
ENDCODE IMMEDIATE
[THEN]
- [UNDEFINED] ESC
- [IF]
+ [UNDEFINED] ESC [IF]
CODE ESC
- CMP #0,&$1DBC
+ CMP #0,&$1DB4
0= IF MOV @R13+,R0
THEN
- COLON
+ COLON
$1B
POSTPONE LITERAL
POSTPONE EMIT
; IMMEDIATE
[THEN]
- [UNDEFINED] >BODY
- [IF]
+ [UNDEFINED] >BODY [IF]
CODE >BODY
ADD #4,R14
MOV @R13+,R0
ENDCODE
[THEN]
- [UNDEFINED] EXECUTE
- [IF]
+ [UNDEFINED] EXECUTE [IF]
CODE EXECUTE
PUSH R14
MOV @R15+,R14
ENDCODE
[THEN]
- [UNDEFINED] EVALUATE
- [IF]
+ [UNDEFINED] EVALUATE [IF]
+
+ CODENNM
+ MOV @R1+,&$1DBC
+ MOV @R1+,&$1DBA
+ MOV @R1+,&$1DB8
+ MOV @R1+,R13
+ MOV @R13+,R0
+ ENDCODE
+
CODE EVALUATE
- MOV #$1DC2,R9
+ MOV #$1DB8,R9
MOV @R9+,R12
MOV @R9+,R11
MOV @R9+,R10
PUSHM #4,R13
- LO2HI
- [ ' \ 8 + , ]
- HI2LO
- MOV @R1+,&$1DC6
- MOV @R1+,&$1DC4
- MOV @R1+,&$1DC2
- MOV @R1+,R13
- MOV @R13+,R0
+ MOV R0,R13
+ ADD #8,R13
+ MOV #\+8,R0
+ MOV #0,R3
ENDCODE
+ ,
+
[THEN]
- [UNDEFINED] CR
- [IF]
+ [UNDEFINED] CR [IF]
CODE CR
- MOV #$40B4,R0
+ MOV #[THEN],R0
ENDCODE
:NONAME
[THEN]
: SET_TIME
- ESC [8;40;80t
- 39 0 DO CR LOOP
+ ESC [8;42;80t
+ 42 0 DO CR LOOP
ESC [H
CR ." DATE (DMY): "
$1CE4 DUP #84
EXECUTE
EVALUATE
CR TIME!
- RST_RET
;
-
-ECHO
-SET_TIME
+
+ RST_SET
+
+ ECHO SET_TIME