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