This is a reworking of Neil Bawd's ONLY STANDARD DEFINITIONS. The idea is to create a new vocabulary STANDARD that only contains the DPANS standard words. This is useful for verifying that a program is portable, because it hides any non-standard words that your usual Forth provides:
$ gforth standard.fs Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc. Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' Type `bye' to exit words ] \ [THEN] [IF] [ELSE] [COMPILE] [CHAR] ['] [ XOR WRITE-LINE WRITE-FILE WORDS WORDLIST WORD WITHIN WHILE W/O VARIABLE VALUE UNUSED UNTIL UNLOOP UM/MOD UM* U> U< U.R U. TYPE TUCK TRUE TO TIME&DATE THROW THEN SWAP STATE SPACES SPACE SOURCE-ID SOURCE SM/REM SLITERAL SIGN SFLOATS SFLOAT+ SFALIGNED SFALIGN SF@ SF! SET-PRECISION SET-ORDER SET-CURRENT SEE SEARCH-WORDLIST SEARCH SAVE-INPUT S>D S" RSHIFT ROT ROLL RESTORE-INPUT RESIZE-FILE RESIZE REPRESENT REPOSITION-FILE REPEAT RENAME-FILE REFILL RECURSE READ-LINE READ-FILE R@ R> R/W R/O QUIT PREVIOUS PRECISION POSTPONE PICK PARSE PAGE PAD OVER ORDER OR OPEN-FILE ONLY OF NIP NEGATE MS MOVE MOD MIN MAX MARKER M+ M*/ M* LSHIFT LOOP LOCALS| LITERAL LEAVE KEY? KEY J INVERT INCLUDED INCLUDE-FILE IMMEDIATE IF I HOLD HEX HERE GET-ORDER GET-CURRENT F~ FVARIABLE FTANH FTAN FSWAP FSQRT FSINH FSINCOS FSIN FS. FROUND FROT FREE FOVER FORTH-WORDLIST FORTH FNEGATE FMIN FMAX FM/MOD FLUSH-FILE FLOOR FLOG FLOATS FLOAT+ FLNP1 FLN FLITERAL FIND FILL FILE-STATUS FILE-SIZE FILE-POSITION FEXPM1 FEXP FE. FDUP FDROP FDEPTH FCOSH FCOS FCONSTANT FATANH FATAN2 FATAN FASINH FASIN FALSE FALOG FALIGNED FALIGN FACOSH FACOS FABS F@ F>D F< F0= F0< F/ F. F- F+ F** F* F! EXIT EXECUTE EVALUATE ERASE ENVIRONMENT? ENDOF ENDCASE EMIT ELSE EKEY? EKEY>CHAR EKEY DUP DUMP DU< DROP DOES> DO DNEGATE DMIN DMAX DFLOATS DFLOAT+ DFALIGNED DFALIGN DF@ DF! DEPTH DELETE-FILE DEFINITIONS DECIMAL DABS D>S D>F D= D< D2/ D2* D0= D0< D.R D. D- D+ CS-ROLL CS-PICK CREATE-FILE CREATE CR COUNT CONSTANT COMPILE, COMPARE CODE CMOVE> CMOVE CLOSE-FILE CHARS CHAR+ CHAR CELLS CELL+ CATCH CASE C@ C, C" C! BYE BLOCK BLK BLANK BL BIN BEGIN BASE AT-XY ASSEMBLER AND ALSO ALLOT ALLOCATE ALIGNED ALIGN AHEAD AGAIN ACCEPT ABS ABORT" ABORT @ ?DUP ?DO ? >R >NUMBER >IN >FLOAT >BODY > = <> <# < ;CODE ; :NONAME : 2VARIABLE 2SWAP 2ROT 2R@ 2R> 2OVER 2LITERAL 2DUP 2DROP 2CONSTANT 2@ 2>R 2/ 2* 2! 1- 1+ 0> 0= 0<> 0< /STRING /MOD / .S .R .( ." . -TRAILING - , +LOOP +! + */MOD */ * (LOCAL) ( ' #S #> # ! ok
The only changes from Neil's original are fixes:
- standalone, no dependencies
- STANDARD is a word list, not a vocabulary
- other minor fixes, e.g. return stack words are postponed
Download standard.fs.
\ --STANDARD-- \ Wil Baden 2003-02-22 \ ******************************************************************* \ * * \ * ONLY STANDARD DEFINITIONS * \ * * \ ******************************************************************* WORDLIST CONSTANT STANDARD STANDARD SET-CURRENT \ Standard-Clone : ! ! ; : # # ; : #> #> ; : #S #S ; : ' ' ; : ( POSTPONE ( ; IMMEDIATE : (LOCAL) POSTPONE (LOCAL) ; IMMEDIATE : * * ; : */ */ ; : */MOD */MOD ; : + + ; : +! +! ; : +LOOP POSTPONE +LOOP ; IMMEDIATE : , , ; : - - ; : -TRAILING -TRAILING ; : . . ; : ." POSTPONE ." ; IMMEDIATE : .( POSTPONE .( ; IMMEDIATE : .R .R ; : .S .S ; : / / ; : /MOD /MOD ; : /STRING /STRING ; : 0< 0< ; : 0<> 0<> ; : 0= 0= ; : 0> 0> ; : 1+ 1+ ; : 1- 1- ; : 2! 2! ; : 2* 2* ; : 2/ 2/ ; : 2>R POSTPONE 2>R ; IMMEDIATE : 2@ 2@ ; : 2CONSTANT 2CONSTANT ; : 2DROP 2DROP ; : 2DUP 2DUP ; : 2LITERAL POSTPONE 2LITERAL ; IMMEDIATE : 2OVER 2OVER ; : 2R> POSTPONE 2R> ; IMMEDIATE : 2R@ POSTPONE 2R@ ; IMMEDIATE : 2ROT 2ROT ; : 2SWAP 2SWAP ; : 2VARIABLE 2VARIABLE ; : : : ; : :NONAME :NONAME ; : ; POSTPONE ; ; IMMEDIATE : ;CODE POSTPONE ;CODE ; IMMEDIATE : < < ; : <# <# ; : <> <> ; : = = ; : > > ; : >BODY >BODY ; : >FLOAT >FLOAT ; : >IN >IN ; : >NUMBER >NUMBER ; : >R POSTPONE >R ; IMMEDIATE : ? POSTPONE ? ; IMMEDIATE : ?DO POSTPONE ?DO ; IMMEDIATE : ?DUP ?DUP ; : @ @ ; : ABORT ABORT ; : ABORT" POSTPONE ABORT" ; IMMEDIATE : ABS ABS ; : ACCEPT ACCEPT ; : AGAIN POSTPONE AGAIN ; IMMEDIATE : AHEAD POSTPONE AHEAD ; IMMEDIATE : ALIGN ALIGN ; : ALIGNED ALIGNED ; : ALLOCATE ALLOCATE ; : ALLOT ALLOT ; : ALSO ALSO ; : AND AND ; : ASSEMBLER ASSEMBLER ; : AT-XY AT-XY ; : BASE BASE ; : BEGIN POSTPONE BEGIN ; IMMEDIATE : BIN BIN ; : BL BL ; : BLANK BLANK ; : BLK BLK ; : BLOCK BLOCK ; \ BUFFER : BYE BYE ; : C! C! ; : C" POSTPONE C" ; IMMEDIATE : C, C, ; : C@ C@ ; : CASE POSTPONE CASE ; IMMEDIATE : CATCH CATCH ; : CELL+ CELL+ ; : CELLS CELLS ; : CHAR CHAR ; : CHAR+ CHAR+ ; : CHARS CHARS ; : CLOSE-FILE CLOSE-FILE ; : CMOVE CMOVE ; : CMOVE> CMOVE> ; : CODE CODE ; : COMPARE COMPARE ; : COMPILE, COMPILE, ; : CONSTANT CONSTANT ; : COUNT COUNT ; : CR CR ; : CREATE CREATE ; : CREATE-FILE CREATE-FILE ; : CS-PICK CS-PICK ; : CS-ROLL CS-ROLL ; : D+ D+ ; : D- D- ; : D. D. ; : D.R D.R ; : D0< D0< ; : D0= D0= ; : D2* D2* ; : D2/ D2/ ; : D< D< ; : D= D= ; : D>F D>F ; : D>S D>S ; : DABS DABS ; : DECIMAL DECIMAL ; : DEFINITIONS DEFINITIONS ; : DELETE-FILE DELETE-FILE ; : DEPTH DEPTH ; : DF! DF! ; : DF@ DF@ ; : DFALIGN DFALIGN ; : DFALIGNED DFALIGNED ; : DFLOAT+ DFLOAT+ ; : DFLOATS DFLOATS ; : DMAX DMAX ; : DMIN DMIN ; : DNEGATE DNEGATE ; : DO POSTPONE DO ; IMMEDIATE : DOES> POSTPONE DOES> ; IMMEDIATE : DROP DROP ; : DU< DU< ; : DUMP DUMP ; : DUP DUP ; \ : EDITOR EDITOR ; : EKEY EKEY ; : EKEY>CHAR EKEY>CHAR ; : EKEY? EKEY? ; : ELSE POSTPONE ELSE ; IMMEDIATE : EMIT EMIT ; \ : EMIT? EMIT? ; \ EMPTY-BUFFERS : ENDCASE POSTPONE ENDCASE ; IMMEDIATE : ENDOF POSTPONE ENDOF ; IMMEDIATE : ENVIRONMENT? ENVIRONMENT? ; : ERASE ERASE ; : EVALUATE EVALUATE ; : EXECUTE EXECUTE ; : EXIT POSTPONE EXIT ; IMMEDIATE : F! F! ; : F* F* ; : F** F** ; : F+ F+ ; : F- F- ; : F. F. ; : F/ F/ ; : F0< F0< ; : F0= F0= ; : F< F< ; : F>D F>D ; : F@ F@ ; : FABS FABS ; : FACOS FACOS ; : FACOSH FACOSH ; : FALIGN FALIGN ; : FALIGNED FALIGNED ; : FALOG FALOG ; : FALSE FALSE ; : FASIN FASIN ; : FASINH FASINH ; : FATAN FATAN ; : FATAN2 FATAN2 ; : FATANH FATANH ; : FCONSTANT FCONSTANT ; : FCOS FCOS ; : FCOSH FCOSH ; : FDEPTH FDEPTH ; : FDROP FDROP ; : FDUP FDUP ; : FE. FE. ; : FEXP FEXP ; : FEXPM1 FEXPM1 ; : FILE-POSITION FILE-POSITION ; : FILE-SIZE FILE-SIZE ; : FILE-STATUS FILE-STATUS ; : FILL FILL ; : FIND FIND ; : FLITERAL POSTPONE FLITERAL ; IMMEDIATE : FLN FLN ; : FLNP1 FLNP1 ; : FLOAT+ FLOAT+ ; : FLOATS FLOATS ; : FLOG FLOG ; : FLOOR FLOOR ; \ FLUSH : FLUSH-FILE FLUSH-FILE ; : FM/MOD FM/MOD ; : FMAX FMAX ; : FMIN FMIN ; : FNEGATE FNEGATE ; : FORTH GET-ORDER NIP STANDARD SWAP SET-ORDER ; : FORTH-WORDLIST STANDARD ; : FOVER FOVER ; : FREE FREE ; : FROT FROT ; : FROUND FROUND ; : FS. FS. ; : FSIN FSIN ; : FSINCOS FSINCOS ; : FSINH FSINH ; : FSQRT FSQRT ; : FSWAP FSWAP ; : FTAN FTAN ; : FTANH FTANH ; : FVARIABLE FVARIABLE ; : F~ F~ ; : GET-CURRENT GET-CURRENT ; : GET-ORDER GET-ORDER ; : HERE HERE ; : HEX HEX ; : HOLD HOLD ; : I POSTPONE I ; IMMEDIATE : IF POSTPONE IF ; IMMEDIATE : IMMEDIATE IMMEDIATE ; : INCLUDE-FILE INCLUDE-FILE ; : INCLUDED INCLUDED ; : INVERT INVERT ; : J POSTPONE J ; IMMEDIATE : KEY KEY ; : KEY? KEY? ; : LEAVE POSTPONE LEAVE ; IMMEDIATE \ LIST : LITERAL POSTPONE LITERAL ; IMMEDIATE \ LOAD : LOCALS| POSTPONE LOCALS| ; IMMEDIATE : LOOP POSTPONE LOOP ; IMMEDIATE : LSHIFT LSHIFT ; : M* M* ; : M*/ M*/ ; : M+ M+ ; : MARKER MARKER ; : MAX MAX ; : MIN MIN ; : MOD MOD ; : MOVE MOVE ; : MS MS ; : NEGATE NEGATE ; : NIP NIP ; : OF POSTPONE OF ; IMMEDIATE : ONLY STANDARD 1 SET-ORDER ; : OPEN-FILE OPEN-FILE ; : OR OR ; : ORDER ORDER ; : OVER OVER ; : PAD PAD ; : PAGE PAGE ; : PARSE PARSE ; : PICK PICK ; : POSTPONE POSTPONE POSTPONE ; IMMEDIATE : PRECISION PRECISION ; : PREVIOUS PREVIOUS ; : QUIT QUIT ; : R/O R/O ; : R/W R/W ; : R> POSTPONE R> ; IMMEDIATE : R@ POSTPONE R@ ; IMMEDIATE : READ-FILE READ-FILE ; : READ-LINE READ-LINE ; : RECURSE POSTPONE RECURSE ; IMMEDIATE : REFILL REFILL ; : RENAME-FILE RENAME-FILE ; : REPEAT POSTPONE REPEAT ; IMMEDIATE : REPOSITION-FILE REPOSITION-FILE ; : REPRESENT REPRESENT ; : RESIZE RESIZE ; : RESIZE-FILE RESIZE-FILE ; : RESTORE-INPUT RESTORE-INPUT ; : ROLL ROLL ; : ROT ROT ; : RSHIFT RSHIFT ; : S" STATE @ IF POSTPONE S" ELSE ['] S" EXECUTE THEN ; IMMEDIATE : S>D S>D ; \ SAVE-BUFFERS : SAVE-INPUT SAVE-INPUT ; \ SCR : SEARCH SEARCH ; : SEARCH-WORDLIST SEARCH-WORDLIST ; : SEE SEE ; : SET-CURRENT SET-CURRENT ; : SET-ORDER SET-ORDER ; : SET-PRECISION SET-PRECISION ; : SF! SF! ; : SF@ SF@ ; : SFALIGN SFALIGN ; : SFALIGNED SFALIGNED ; : SFLOAT+ SFLOAT+ ; : SFLOATS SFLOATS ; : SIGN SIGN ; : SLITERAL POSTPONE SLITERAL ; IMMEDIATE : SM/REM SM/REM ; : SOURCE SOURCE ; : SOURCE-ID SOURCE-ID ; : SPACE SPACE ; : SPACES SPACES ; : STATE STATE ; : SWAP SWAP ; : THEN POSTPONE THEN ; IMMEDIATE : THROW THROW ; \ THRU : TIME&DATE TIME&DATE ; : TO STATE @ IF POSTPONE TO ELSE ['] TO EXECUTE THEN ; IMMEDIATE : TRUE TRUE ; : TUCK TUCK ; : TYPE TYPE ; : U. U. ; : U.R U.R ; : U< U< ; : U> U> ; : UM* UM* ; : UM/MOD UM/MOD ; : UNLOOP POSTPONE UNLOOP ; IMMEDIATE : UNTIL POSTPONE UNTIL ; IMMEDIATE : UNUSED UNUSED ; \ UPDATE : VALUE VALUE ; : VARIABLE VARIABLE ; : W/O W/O ; : WHILE POSTPONE WHILE ; IMMEDIATE : WITHIN WITHIN ; : WORD WORD ; : WORDLIST WORDLIST ; : WORDS WORDS ; : WRITE-FILE WRITE-FILE ; : WRITE-LINE WRITE-LINE ; : XOR XOR ; : [ POSTPONE [ ; IMMEDIATE : ['] POSTPONE ['] ; IMMEDIATE : [CHAR] POSTPONE [CHAR] ; IMMEDIATE : [COMPILE] POSTPONE [COMPILE] ; IMMEDIATE : [ELSE] POSTPONE [ELSE] ; IMMEDIATE : [IF] POSTPONE [IF] ; IMMEDIATE : [THEN] POSTPONE [THEN] ; IMMEDIATE : \ POSTPONE \ ; IMMEDIATE : ] ] ; STANDARD 1 SET-ORDER