X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=MSP430-FORTH%2FMSP_EXP430FR5994%2FUTILITY.4TH;h=22a26ba8b042947b93a28520edf97e2a7bbb49ae;hb=ec2b890a07db1986430c91c464d38e38f5446f3d;hp=ecdd66f2692bc02fdb728477a3f10cede1d130f0;hpb=0e5d64b40c1f3e8811dec8614e6aa1b99ad97802;p=fast-forth%2Fmaster.git diff --git a/MSP430-FORTH/MSP_EXP430FR5994/UTILITY.4TH b/MSP430-FORTH/MSP_EXP430FR5994/UTILITY.4TH index ecdd66f..22a26ba 100644 --- a/MSP430-FORTH/MSP_EXP430FR5994/UTILITY.4TH +++ b/MSP430-FORTH/MSP_EXP430FR5994/UTILITY.4TH @@ -1,19 +1,201 @@ ; ------------------------------------------------------------------------------ -; UTILITY.4th +; UTILITY.4th for MSP_EXP430FR5994 ; ------------------------------------------------------------------------------ -[UNDEFINED] {TOOLS} [IF] +PWR_HERE + +[DEFINED] {TOOLS} [IF] {TOOLS} [THEN] -PWR_STATE +[UNDEFINED] {TOOLS} [IF] MARKER {TOOLS} -[UNDEFINED] ? [IF] -CODE ? +[UNDEFINED] EXIT [IF] +CODE EXIT +MOV @R1+,R13 +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] U< [IF] +CODE U< +SUB @R15+,R14 +0<> IF + MOV #-1,R14 + U< IF + AND #0,R14 + THEN +THEN +MOV @R13+,R0 +ENDCODE +[THEN] + +[UNDEFINED] IF [IF] +CODE IF +SUB #2,R15 +MOV R14,0(R15) +MOV &$1DC6,R14 +ADD #4,&$1DC6 +MOV #$4042,0(R14) +ADD #2,R14 +MOV @R13+,R0 +ENDCODE IMMEDIATE + +CODE THEN +MOV &$1DC6,0(R14) +MOV @R15+,R14 +MOV @R13+,R0 +ENDCODE IMMEDIATE +[THEN] + +[UNDEFINED] BEGIN [IF] +CODE BEGIN + MOV #$402C,R0 +ENDCODE IMMEDIATE + +CODE UNTIL + MOV #$4042,R9 +BW1 ADD #4,&$1DC6 + MOV &$1DC6,R10 + MOV R9,-4(R10) + MOV R14,-2(R10) + MOV @R15+,R14 + MOV @R13+,R0 +ENDCODE IMMEDIATE + +CODE AGAIN +MOV #$403E,R9 +GOTO BW1 +ENDCODE IMMEDIATE + +: WHILE +POSTPONE IF SWAP +; IMMEDIATE + +: 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 #$404C,-2(R14) +ADD #2,&$1C00 +MOV &$1C00,R10 +MOV #0,0(R10) +MOV @R13+,R0 +ENDCODE IMMEDIATE + +CODE LOOP + MOV #$406E,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 - MOV #U.,R0 + CMP #0,R14 +0<> WHILE + MOV R10,0(R14) +REPEAT + MOV @R15+,R14 + MOV @R13+,R0 +ENDCODE IMMEDIATE + +CODE +LOOP +MOV #$405C,R9 +GOTO BW1 +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] 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] SWAP [IF] +CODE SWAP +MOV @R15,R10 +MOV R14,0(R15) +MOV R10,R14 +MOV @R13+,R0 +ENDCODE +[THEN] + + +[UNDEFINED] DROP [IF] +CODE DROP +MOV @R15+,R14 +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] @ [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] @@ -41,6 +223,119 @@ MOV @R13+,R0 ENDCODE [THEN] +[UNDEFINED] 2DUP [IF] +CODE 2DUP +MOV R14,-2(R15) +MOV @R15,-4(R15) +SUB #4,R15 +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] C@ [IF] +CODE C@ +MOV.B @R14,R14 +MOV @R13+,R0 +ENDCODE +[THEN] + +[UNDEFINED] AND [IF] +CODE AND +AND @R15+,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] 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] OVER [IF] +CODE OVER +MOV R14,-2(R15) +MOV @R15,R14 +SUB #2,R15 +MOV @R13+,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= ?GOTO FW1 + U< IF + BEGIN + MOV.B @R9+,0(R8) + ADD #1,R8 + SUB #1,R10 + 0= UNTIL + MOV @R13+,R0 + ELSE + 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 +FW1 MOV @R13+,R0 +ENDCODE +[THEN] + [UNDEFINED] .S [IF] CODE .S MOV R14,-2(R15) @@ -80,34 +375,10 @@ CODE .RS ENDCODE [THEN] -[UNDEFINED] + [IF] -CODE + -ADD @R15+,R14 -MOV @R13+,R0 -ENDCODE -[THEN] - -[UNDEFINED] C@ [IF] -CODE C@ -MOV.B @R14,R14 -MOV @R13+,R0 -ENDCODE -[THEN] - -[UNDEFINED] AND [IF] -CODE AND -AND @R15+,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 +[UNDEFINED] ? [IF] +CODE ? + MOV @R14,R14 + MOV #U.,R0 ENDCODE [THEN] @@ -144,31 +415,6 @@ 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] OVER [IF] -CODE OVER -MOV R14,-2(R15) -MOV @R15,R14 -SUB #2,R15 -MOV @R13+,R0 -ENDCODE -[THEN] - [UNDEFINED] U.R [IF] : U.R >R <# 0 # #S #> @@ -204,3 +450,4 @@ LO2HI RST_HERE [THEN] +ECHO